![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Außerdem ist dies falsch - es gibt ein 'final' Schlüsselwort in MQL5.
{
//--- class body
};
class CBar : public CFoo
{
//--- class body
};
Damit lässt sich CBar nicht kompilieren, weil CFoo final ist.
Du liegst hier falsch, whroeder1.
Wenn Sie in der Basisklasse kein virtual hinzufügen, verlieren Sie die Polymorphie - die Methode wird statisch und nicht dynamisch zur Laufzeit aufgerufen.
Dies war der Vorbehalt, den whroeder1 erwähnte.
Außerdem ist dies falsch - in MQL5 gibt es ein Schlüsselwort "final".
1. Es ist nicht nur schlechte Praxis, sondern in jeder Basis (nicht nur in CObject) erforderlich, wenn Polymorphismus erforderlich ist.
2. Es ändert die Dinge - siehe 1.
3. final existiert.
Es gibt auch ein letztes Schlüsselwort in MQL4, obwohl die Dokumentation es (meines Wissens) nicht zeigt. Möglicherweise wurde es in einem Build-Update erwähnt.
Richtig!
Es war Build 1430 für MQL5. Wahrscheinlich etwa zur gleichen Zeit für MQL4 mit dem gemeinsamen Compiler.
Hallo Leute,
Ich arbeite in einer Klasse genau wie dieser Beitrag, aber meine "score" Variable ist eine Methode. Wie bekomme ich ihren Wert?
Dies ist der Code vom Anfang des Beitrags:
Dies ist, was ich versuche zu tun:
Die Frage ist, wie man getPrice() innerhalb der Methode Compare() verwenden kann?
DankeHallo Leute,
Ich arbeite in einer Klasse genau wie dieser Beitrag, aber meine "score" Variable ist eine Methode. Wie bekomme ich ihren Wert?
Dies ist der Code vom Anfang des Beitrags:
Das ist, was ich versuche zu tun:
Die Frage ist, wie man getPrice() innerhalb der Methode Compare() verwendet?
DankeDeklarieren Sie die Methode getPrice() mit dem Schlüsselwort const.
Deklarieren Sie die Methode getPrice() mit dem Schlüsselwort const.
Hallo @Alain Verleyen,
ich habe die Methode getPrice() geändert, anstelle von CopyClose() verwende ich CopyBuffer(). Das ändert aber nichts am eigentlichen Ziel.
Wenn ich also das Schlüsselwort "const" in der Methode getPrice() verwende, erhalte ich die Fehlermeldung: "'CopyBuffer' - keine der Überladungen kann auf den Funktionsaufruf angewendet werden". Ich denke, dies tritt auf, weil CopyBuffer keine const-Methode ist und es nicht möglich ist, eine nicht-konst-Methode innerhalb einer const-Methode aufzurufen.