template<typename T>
class A { public:
booloperator==( const A& ); //error: 'operator' - function must have a body
T t;
};
class B {
A<int> a;
};
template<typename T>
bool A::operator==( const A& ) { returnfalse; }
voidOnStart()
{
A<int> a, b;
Print( a == b );
}
正是如此!现在我可以同时调用f各种函数和变量。这种模糊不清的地方必须有一些常识,以免造成意外的错误。在我看来,通过向typename f发出一个空字符串来欺瞒,而不是在你不小心拿起和定义另一个f时造成问题,这是合乎逻辑的。
不要这么固执地到处寻找常识,特别是在虫子中间。如果听你的,MQL中的任何bug根本就不是bug,而是明智的开发者所包含的功能 ))
正如已经指出的,如果你有任何疑问,首先要做的是在C++中检查,然后想出一个解决方案。
至于模棱两可的地方,应该会引起编译器错误,不会有问题。在样本A100中,一切都很清楚,毫不含糊,所以我不太明白你的意思。如果你需要重载一个函数,你就重载它,并修复歧义中的编译错误,就这样。
我如何在MQL中初始化一个模板类的静态成员?
我如何在MQL中初始化一个模板类的静态成员?
我如何在MQL中初始化一个模板类的静态成员?
A100:
当然,在一般情况下,这种方法不对应于C++,但它在MQL中是有效的。
我在班级外的方法上也遇到了类似的问题。
多亏了你,解决方案已经找到。
当然这也是错误的,因为这意味着定义了一个模板方法,而不是模板类的方法。而如果一个班级同时包含这两种情况,就会出现模糊不清的情况我在课外取法时也遇到了类似的问题。
这就更方便了。唯一的限制是,你不能在中间有另一个类(像例子中那样)。
关于交易、自动交易系统和策略测试的论坛
错误, 漏洞, 问题
A100, 2016.05.19 23:26
编译错误
因为它意味着定义一个模板方法而不是模板类方法。而如果该类包含这两方面的内容,就会出现模糊不清的情况
不会的--这一切都在我们面前想好了(c)。你必须重复模板行两次(上面的是指类,下面的是指方法)。
伙计,这看起来真的很混乱。
A100:
这样就更方便了。
是啊,不用放<T>就是这么严重的便利)。
是的,不用放<T>是如此严重的便利。)
我在课外取法时也遇到了类似的问题。
当然是错的,因为这意味着定义了一个模板方法而不是模板类方法。而如果该类包含这两种情况,就会出现模糊不清的情况。
我注意到,方法经常被放在类之外,但为什么?我看了一下SB,所以 "小 "方法是在一行中一次性定义的,"长 "方法是在类之外定义的。没有感知上的便利,因为外部定义中的ALT+G提供的不是一个,而是两个过渡点。而如果有过载,则分别为2的倍数。而ALT+M已经可以一次性显示所有内容。
也许这是对界面定义的清晰度的某种致敬,但到目前为止,我还没有进入这个领域。