Fehler, Irrtümer, Fragen - Seite 1135
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
Bitte veröffentlichen Sie Ihren gesamten Code.
Dies ist ein Beispiel aus der mql5-Dokumentation. Hier ist ein Link zu dieser Seite. Und unten ist dieser Code.
Es scheint, dass mit der Aktualisierung nicht nur die obligatorischePlatzierung von statischen Klassendatenmitgliedern eingeführt wurde,
aber auch den impliziten Aufruf des parametrischen Konstruktors entfernt.
Verwenden Sie einen expliziten Aufruf:
Mit welcher Begründung haben sie die Umwandlung von nicht konstanten Objekten in konstante aufgehoben?
Alles wird normal kompiliert - keine Fehler oder Warnungen
Wenn es irgendwelche Fehler gibt, dann nur in der Struktur, aber die werden mit der Zeit behoben.Alles kompiliert ohne Fehler oder Warnungen
Wenn "A" eine nicht-konstante Methode enthält, aber selbst als konstantes Objekt an eine Funktion übergeben wird, dann kann diese nicht-konstante Methode in der Funktion nicht mehr aufgerufen werden.
Und nun die Frage der Aufmerksamkeit: Lassen Sie uns das CO-Objekt wischen.Compare():
O.k., es ist eine konstante Methode, die einen konstanten Objektknoten nimmt. Es ist sein Recht, Knoten als konstant zu deklarieren. Aber auf welcher Grundlage sollte Compare jetzt nur noch mit konstanten Methoden von Knoten arbeiten? Node ist nicht verpflichtet, konstante Methoden zu haben, um zu vergleichen. Aber es stellt sich heraus, dass er, nur weil das Objekt komplex ist und keine konstanten Methoden hat, jetzt nicht die Standardbibliothek mit allem, was dazu gehört, verwenden kann!!!Die Platzierung statischer Mitglieder ist nun obligatorisch.
Und wie soll man komplexe statische Objekte platzieren, wenn statische Konstruktoren nicht erlaubt sind?
Wenn "A" eine nicht konstante Methode enthält, aber selbst als konstantes Objekt an die Funktion übergeben wird, kann diese nicht konstante Methode nun nicht in der Funktion aufgerufen werden.
Das ist richtig, so sollte es sein, denn wozu sonst die Angabe
anstelle von
void f(A* a)
Wenn "A" eine nicht konstante Methode enthält, aber selbst als konstantes Objekt an die Funktion übergeben wird, kann diese nicht konstante Methode nun nicht in der Funktion aufgerufen werden.
Und wie soll man komplexe statische Objekte platzieren, wenn statische Konstruktoren nicht erlaubt sind?