Fehler, Irrtümer, Fragen - Seite 2808

 
Fehler bei der Ausführung
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 );
}

Das Ergebnis in MQL: 1

In C++: 2

Soweit ich mich erinnere, wurde das ursprüngliche MQL-Konzept vor langer Zeit geändert, und jetzt wird, wie in C++, die Basisklasse nur dann aufgerufen, wenn es keine passende Funktion in einer abgeleiteten Klasse gibt. Oder haben sie vielleicht alles wieder geändert?

 
A100:

Bei MQL ist das in Ordnung:

aber C++ gibt in beiden Fällen einen Fehler aus

Was könnte im zweiten Fall ein Fehler sein? Es gibt höchstens eine Warnung (Hinweis), dass ein Zeiger deklariert, aber nicht verwendet wurde.

 
Bitte beheben Sie den in allen neuen Versionen beobachteten Fehler

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

2020.07.26 10:54:28.289 Tester Experten-Datei ....\MQL5\StochasticCCI.ex5 open error [2]

es ist nicht da und sollte nicht da sein.

der Fehler ist ein Netzwerk-Agent nach dem Upgrade, vor dem Upgrade funktionierte es gut, in alten Versionen der Optimierer nicht einen Fehler in der Expert Advisor, der Expert Advisor wurde nicht neu kompiliert

Vollständige Demontage und Neuinstallation von Metatrader mit Löschung aller Daten hatte keinen Effekt



 
Boris Egorov:
Bitte beheben Sie den in allen neuen Versionen beobachteten Fehler

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

2020.07.26 10:54:28.289 Tester Experten-Datei ....\MQL5\StochasticCCI.ex5 open error [2]

es ist nicht da und sollte nicht da sein.

der Fehler ist ein Netzwerk-Agent nach dem Upgrade, vor dem Upgrade funktionierte es gut, in alten Versionen der Optimierer nicht einen Fehler in der Expert Advisor, der Expert Advisor wurde nicht neu kompiliert

Vollständige Demontage und Neuinstallation von Metatrader mit Löschung aller Daten hatte keinen Effekt



Zeigen Sie mir bitte den Code für Ihren Indikatoraufruf.
 
Mihail Matkovskij:

Worin könnte der Fehler im zweiten Fall liegen? Es gibt höchstens eine Warnung (Hinweis), dass der Zeiger deklariert wurde, aber nicht verwendet wird.

Das liegt daran, dass es nicht

class B : public A {};
es kann verschiedene Dialekte geben, daher lohnt es sich auf jeden Fall, bei den Entwicklern nachzufragen
 
MetaQuotes:
Zeigen Sie bitte den Code Ihres Indikatoraufrufs an.

Beachten Sie den Beitrag, die Berater der Menschen haben aufgehört zu arbeiten !!!!!!! 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...
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

A100, 2020.07.26 01:02

Ich habe nur einen Fehler in MQL:

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

aber C++ hat in beiden Fällen einen Fehler


Bitte erklären Sie, warum es ein Problem mit diesem Code gibt?

 
fxsaber:

Erklären Sie bitte, warum es in diesem Code ein Problem gibt?

Ich habe keine Ahnung! Ich habe dieses Beispiel auseinandergenommen... Struktur in Klasse geändert -C++-Shell erzeugt Fehler:

Fehler: 'Klasse A A::A' ist unzugänglich

Sie können es selbst überprüfen.

 

Kontextauflösung. Der Konstruktor ist aufgrund der privaten Vererbung über den Vorgänger unzugänglich.

Wenn Sie explizit Kontext angeben, wird alles kompiliert

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

_____

Fragen Sie nicht, warum ein Konstruktor erforderlich ist - ich habe keine Ahnung.

 
@A100, @TheXpert, Vielen Dank.