错误、漏洞、问题 - 页 2808

 
执行时出错
class A {};
class B : public A {
public:
template<typename T>
                void f( T )  { printf( "%d", 1 ); }
};
class C : public B {
public:
                void f( A* ) { printf( "%d", 2 ); }
};
void OnStart()
{
        C *c;
        B *b;
        c.f( b );
}

在MQL中的结果。1

在C++中:2

在我的记忆中,最初的MQL概念在很久以前就被改变了,现在,就像在C++中一样,只有在派生类中没有合适的函数时才会调用基类。或者他们又改变了这一切?

 
A100:

在MQL中,这很好。

但C++在这两种情况下都给出了一个错误

在第二种情况下,什么可能是一个错误?最多有一个警告(提示),即一个指针被声明但没有被使用。

 
请解决所有新版本中观察到的错误

2020.07.26 10:54:28.285 PKFDC0:30019 genetic pass (94, 1154) tested with error "OnInit returned non-zero code 1" in 0:00:00.110

2020.07.26 10:54:28.289 Tester expert file ....\MQL5\StochasticCCI.ex5 open error [2]

它不存在,也不应该存在。

该错误是升级后的网络代理,在升级前工作正常,在旧版本中,优化器不会在专家顾问中出现错误,专家顾问没有被重新编译。

完全拆除并重新安装Metatrader,删除所有数据,没有任何效果



 
Boris Egorov:
请解决所有新版本中观察到的错误

2020.07.26 10:54:28.285 PKFDC0:30019 genetic pass (94, 1154) tested with error "OnInit returned non-zero code 1" in 0:00:00.110

2020.07.26 10:54:28.289 Tester expert file ....\MQL5\StochasticCCI.ex5 open error [2]

它不存在,也不应该存在。

该错误是升级后的网络代理,在升级前工作正常,在旧版本中,优化器不会在专家顾问中出现错误,专家顾问没有被重新编译。

完全拆除并重新安装Metatrader,删除所有数据,没有任何效果



请出示你的指标调用 代码。
 
Mihail Matkovskij:

第二种情况下的错误可能是什么?最多只有一个警告(提示),即该指针已被声明但未被使用。

这是因为它不是

class B : public A {};
可能有不同的方言,所以在任何情况下都值得向开发商核实。
 
MetaQuotes:
请出示你的指标调用 代码。

注意帖子,人们的顾问已经停止工作 !!!!!!! https://www.mql5.com/ru/forum/347385/page5#comment_17519416

Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения
Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения
  • 2020.07.26
  • www.mql5.com
В пятницу 24 июля 2020 года будет выпущена обновленная версия платформы MetaTrader 5...
 

关于交易、自动交易系统和交易策略测试的论坛

虫子,虫子,问题

A100, 2020.07.26 01:02

我在MQL中只有一个错误。

class A {};
class B : A {};
class C : B {
                void f1( A* ) {}    //(1)нормально
                void f2() { A *a; } //(2)нормально
};

但C++在这两种情况下都有一个错误


请解释为什么这个代码有问题?

 
fxsaber:

请解释为什么这段代码有问题?

我不知道!我把这个 例子拆开...将结构改为类--C++外壳 产生错误。

错误:'A类A::A'无法访问

你可以自己检查一下。

 

上下文解析。由于私有继承,构造函数无法通过祖先访问。

如果你明确指定了上下文,所有的东西都会被编译成

                void f1( ::A* ) {}    //(1)нормально
                void f2() { ::A *a; } //(2)нормально

_____

不要问为什么需要一个构造函数--我不知道。

 
@A100,@TheXpert, 谢谢你。
原因: