错误、漏洞、问题 - 页 1417

 

A100:

virtual int Compare(const CObject *node,const int mode=0) const;


你是对的。简洁明了,没有任何多余的话语。我已经发布了一个工作代码。

附加的文件:
sort.mq5  3 kb
 
Stanislav Korotky:

结果是,在这个方法中typename正确地定义了传入的类型,例如int,但在B构造函数中typename已经等于string。

Typename的结果总是字符串类型,换句话说,Typename可以按照惯例被表示为一个函数
string typename( X );
 
A100:
typename的结果总是字符串类型,换句话说,就是
这不是我的意思。 typename返回一个包含类型名称的字符串。在一个模板化的类方法里面,字符串的类型是 "int",而在从那里调用的构造函数里面,字符串包含 "string"。
 
Stanislav Korotky:
这不是我的意思。 typename返回一个带有类型名称的字符串。在模板类方法里面,字符串的类型是 "int",而在从那里调用的构造函数里面,字符串包含 "string"。
class A { public:
template<typename T>
        A( T ) { Print( typename( T )); }
};
class B { public:
template<typename T>
        void f( T t ) { A a( t ); } //вызываем A::A(...)
};
void OnStart()
{
        B b;
        int i = 0;
        b.f( i );
}
结果:int
 

如果缺少#endif,编译器不会报告错误

#property library
#ifndef  MACRO
#define  MACRO

最好是这样,否则很难发现错误
 
A100:
结果是:int。
是的,这个最小的例子可以正常工作,但更复杂的源代码却不能。在SD中写道。
 
CoderMQ4:

伙计们,这是一个市场错误还是完全正常?


我没有试过,但如果它与硬件而不是操作系统有关,就不应该工作。这就像把硬盘拆下来,放在不同的主板上,用不同的视频。将马上开始寻找新的司机。

还是我对虚拟机 有误解?

 

在一个派生类的实例中调用一个虚拟函数,会导致从基类而不是派生类中调用该函数。

 
Ilya Malev:

在一个派生类的实例中调用一个虚拟函数,会导致从基类而不是派生类中调用该函数。

在构造函数中总是这样的。为什么?
 
A100:
他们总是在构造函数中这样做。为什么?

谢谢你,我不知道)最好能把它添加到MQL5参考资料中,你知道,在那里提到了虚拟函数 和构造函数。不是所有的语言都是这样的。