class A {
public:
virtualvoid f() const {}
int x;
};
class B : public A {
public:
virtualvoid f() /*не const*/ { x = 2; }
};
void g( const A* a ) { a.f(); }
voidOnStart()
{
A *a = new B();
a.x = 1;
Print( a.x ); //результат = 1
g( a );
Print( a.x ); //результат = 2, а обещали, что g( const A* ) не может менять объектdelete( a );
}
另一个例子
class A {
public:
virtualvoid f() const { Print( "1" ); }
};
class B : public A {
public:
virtualvoid f() { Print( "2" ); }
};
void g( const A* a ) { a.f(); }
voidOnStart()
{
A *a = new B();
g( a );
delete( a );
}
我想明白了,我有一个多月的安装文件,现在我下载了一个新的安装文件,它可以工作了,我不认为安装文件在变化,因为它之后下载的文件是正确的。
反过来说旧的那个,如果它没有显示标志,为什么会开始显示它......这很奇怪...
我不知道,但新的一个表现如常,没有任何迹象,并开始下载安装文件。
我不知道,但新的表现像往常一样,没有任何标签,开始下载安装文件。
我遇到过,在安装过程中出现这样的窗口,可能与电脑上的保护有关(显然是由于一些定期的更新),以及随后的奇特表现。
不管是以前的还是刚下载的安装文件,都没有关系。
现在我记下了,为了将来,以防万一,这个新的依赖对我来说(我现在不做实验)。
但我很高兴你的问题得到了解决。
作为一个建议:据我记得,最近有一个 MT5终端的更新。也许在这种情况下,代理提示、过期的安装文件和在线安装过程之间存在某种联系。从2014.04.04 10:14的新MT5 构建的变化列表中可以看出:"3.终端:修复了 一个在某些情况下 导致图形对象不能在图表上绘制的 错误。" 我不知道开发者是否已经满足了我在SD#966979中的要求,或者这是另一种修复,甚至是下一个构建中的某些改进的副作用,但无论如何,我现在已经没有问题了。变更清单上说这是一个错误,但在与SD 的通信中,我被明确告知"这不是一个错误,是为了节省资源的一个限制。"
你现在可以像以前一样在任何TF上舒适地观看TA的构建。
谢谢你,我将关闭该申请。
方法常量 可以在派生类中被重写(构建917)。
另一个例子
结果=2,但在C++中结果=1
错误不在于在派生类中你不能声明与基类相同名称的方法(这是允许的),而在于C++认为它们是不同的,而MQL认为B::f()覆盖了A::f()常量。
Print()函数 将浮动信号非数字输出为非信号,这是不符合逻辑的,因为double正常输出这两种信号。
Float必须:1)从非信号中去除前缀Q,然后信号和非信号将以同样的方式打印,或者2)输出带有前缀S的信号。如果我错了,请给我一个信号浮点非数字的例子,它将被Print()函数打印出来,没有前缀Q
例如,我把一个非数字的双信号,转换为浮点数,并通过Print()输出两者。在第一种情况下,它打印SNAN,在第二种情况下打印QNAN。
在探究从测试器向文件写入数据的方法的过程中,这里有一个错误(缩短了,因为它不适合)。
当然,我明白这个错误是我笨拙的自然结果。而且在任何情况下,它很快就被修复了(问题出在试图通过第三个函数将非字符串数据传入FileWrite,如果有必要的话--我可以更详细地描述它)。但这个错误看起来不是很清楚,有点吓人:)而且编译器也没有在任何地方提示它是应该的。也许我们至少应该添加一些扭曲或其他的东西......。
在探究从测试器向文件写入数据的方法的过程中,这里有一个错误(缩短了,因为它不适合)。
当然,我明白这个错误是我笨拙的自然结果。而且在任何情况下,它很快就被修复了(问题出在试图通过第三个函数将非字符串数据传入FileWrite,如果有必要的话--我可以更详细地描述它)。但这个错误看起来不是很清楚,有点吓人:)而且编译器也没有在任何地方提示它是应该的。也许我们至少应该添加一些扭曲或其他的东西......。
是的,请更详细地描述。
对构建、操作系统、比特率、测试器设置 感兴趣。请附上代码以供复制。
谢谢你。
好吧,我试试。我能够把它回滚到正确的时刻并重现它,但我无法隔离这个错误并单独重现它......
Build: MetaTester 5 x64 build 910 (07 Mar 2014)https://dl.dropboxusercontent.com/u/61587787/bugreport/build.png
Win7 x64桌面https://dl.dropboxusercontent.com/u/61587787/bugreport/system.png
从测试器窗口复制:https://dl.dropboxusercontent.com/u/61587787/bugreport/log.txt
测试者的截图(嗯,你永远不知道):https://dl.dropboxusercontent.com/u/61587787/bugreport/tester1.png https://dl.dropboxusercontent.com/u/61587787/bugreport/tester2.png
测试仪设置(我不知道我是否知道我的意思):https://dl.dropboxusercontent.com/u/61587787/bugreport/config.png
代码片段。
如果用WriteCSV("test.csv",(string)idx) 代替;--错误就会 消失。其他非字符串的变量在这里没有任何作用。不过,idx等于什么似乎并不重要(它只是数组中新闻的序列号)。在试图保存结果时,在任何新闻上重现。在这些警告中,只有从 "数字 "到 "字符串 "的隐式转换 被显示出来,但同样,只有在这种情况下才会变成崩溃。
我真的不想在这里发布完整的代码和.集,但我可能会把它发送到某个地方。