错误、漏洞、问题 - 页 1980

 
Stanislav Korotky:

不要无理取闹。你是第一个在这里开始不正常交流的人。

通过询问在C++中编译的情况?在我看来,这是一个正常的工作问题。
 
Andrey Barinov:
供你参考,如果你的两个例子都清楚地翻译成了C++,那么C++在这两种情况下都会给出一个错误。MQL在第一种情况下不会出现错误,只是因为编译过程(而不是语言本身)不同。
 
A100:
通过询问在C++中编译的情况?

有了这两段经文。

你有没有试过用C++编译这个例子--或者这是一般的理论推理?

作为对我给出的C++工作实例的回应,以及

如果你没有尝试过--就这样写吧。

在回答我的例子时,我刚刚试过。

 
Stanislav Korotky:

有了这两段经文。

作为对我在C++中给出的工作实例的回应,还有

以回应我刚才的尝试。

在编写ServiceDesk时,你是否也引用第三方网站上的代码作为例子?如果没有,为什么不呢?
 
A100:
供你参考,如果你的两个例子都清楚地翻译成了C++,那么C++在这两种情况下都会给出一个错误。MQL在第一种情况下不会出现错误,只是因为编译过程(而不是语言本身)不同。

谢谢你。

 
Andrey Barinov:

谢谢你。

为了不至于没有证据,我给最后一个人做了模拟(用我自己的方式调整了一下)。

#ifdef __cplusplus
class B;
class A {
        int f( B* b ) { return b->i; } //Error: E2315
        int i;
};
class B : public A {};
#endif

并对原始信息

#ifdef __cplusplus
class B;
class A {
        void f() {}
        void g() { b->f(); } //Error: E2315
        B *b;
};
class B : public A {};
#endif
 

我检查了一下,Stanislav的变体在VS 2010中编译成功了。此外,对私人领域的访问也是有效的,不仅仅是对方法。所以,也许A100这次的结论有点过分了)。

 
Alexey Navoykov:

我检查了一下,Stanislav的变体在VS 2010中编译成功了。此外,对私人领域的访问也是有效的,不仅仅是对方法。所以,也许A100这次的结论是错误的 )

它与https://www.mql5.com/ru/forum/1111/page1999#comment_5677254 完全一样吗?

以上是我的选择...在这里发布代码--如果他不能自己发布的话

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.29
  • www.mql5.com
Форум алго-трейдеров MQL5
 
A100:

它是否与https://www.mql5.com/ru/forum/1111/page1999#comment_5677254 完全一致?

以上是我的变体。把代码贴在这里--因为他自己不能贴。

你是用什么编译器来编译的?我的VS 2010不能编译你的代码的原因完全不同:B类没有定义该类的方法被调用的地方。你需要把g()的定义放在类之外,这样做。而这正是斯坦尼斯拉夫所做的。也就是说,你的代码应该是这样的。

class B;
class A {
  void f() {}
  void g();
  B *b;
};
class B : public A {};


void A::g(void)
{
  b->f();
}

并且可以编译。

 
Alexey Navoykov:

你是用什么编译器来编译的?

基本上它没有改变任何东西--编译错误(我有一个平板电脑--Borland编译器)。

#ifdef __cplusplus
class B;
class A {
        void f() {}
        void g();
        B *b;
};
class B : public A {};
void A::g() { b->f(); } //Error: E2247
#endif