Ошибки, баги, вопросы - страница 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

                 в С++: 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]

а его там нет и быть и не должно

ошибку дает сетевой агент после обновления, до обновления работал нормально, на старых версиях оптимизатор не дает ошибки в эксперте, эксперт не перекомпилировался

полный снос и переустановка метатрейдера с удалением всех данных эффекта не дал



 
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]

а его там нет и быть и не должно

ошибку дает сетевой агент после обновления, до обновления работал нормально, на старых версиях оптимизатор не дает ошибки в эксперте, эксперт не перекомпилировался

полный снос и переустановка метатрейдера с удалением всех данных эффекта не дал



Покажите код вашего вызова индикатора, пожалуйста.
 
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:

Просьба пояснить, почему в этом коде проблема?

Понятия не имею! Разбирал этот пример... поменял struct на class - C++ shell выдал ошибку:

error: 'class A A::A' is inaccessible

Можете сами проверить

 

в разрешении контекста. через предка конструктор недоступен из-за приватного наследования.

если явно указать контекст, все будет компилироваться

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

_____

зачем требуется конструктор, не спрашивайте - понятия не имею.

 
@A100, @TheXpert, Спасибо. 
Причина обращения: