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
Ich habe mir die Ergebnisse meines Kampfes mit OOP-artigem Code angesehen - hmmm... ausgezeichnet! ))))
Ich habe eine Frage, aber in meinem Code, na ja, genau drei Mal, verwende ich eine Konstruktion wie:
ruft alle in privaten Methoden, aber gibt es eine "Jedi-Methode?", um im Quellcode von CheckPointer(m_order)==POINTER_INVALID wegzukommen
Ich frage nach einigen get / set
keine besonderen Probleme, sondern sozusagen eine Laune, oder wenn der Wissensdurst über OOP-Methoden in C++ noch nicht gestillt ist
Wenn die Frage ist "viele Buchstaben", dann !CheckPointer(mPtr), und wenn die Funktion aufrufen, Sie initialisieren alle Zeiger auf NULL in den Konstruktor und vergleichen Sie es in den Code, nicht zu vergessen, wenn das Löschen ptr; ptr=NULL;
Ich habe mir die Ergebnisse meines Kampfes mit OOP-artigem Code angesehen - hmmm... ausgezeichnet! ))))
Ich habe eine Frage, aber in meinem Code, na ja, genau drei Mal, verwende ich eine Konstruktion wie:
ruft alle in privaten Methoden, aber gibt es eine "Jedi-Methode?", um im Quellcode von CheckPointer(m_order)==POINTER_INVALID wegzukommen
Ich frage nach einigen get / set
keine besonderen Probleme, sondern sozusagen eine Laune, oder wenn der Wissensdurst über OOP-Methoden in C++ noch nicht gestillt ist
Igor, schau dir dieses Beispiel an, ich glaube, das ist es, was du wissen willst.
Wenn die Frage "viele Buchstaben" lautet, dann !CheckPointer(mPtr), und wenn in einem Funktionsaufruf, initialisieren Sie alle Zeiger auf NULL im Konstruktor und vergleichen Sie damit im Code, nicht zu vergessen beim Löschen von ptr; ptr=NULL;
Nun, und das hier, für Zucker:
Keine besonderen Probleme, aber sozusagen aus einer Laune heraus, oder weil der Durst nach dem Erlernen von OOP-Methoden in C++ noch nicht gestillt ist.
Ich empfehle dringend, dass Sie alle Felder der Klasse im Konstruktor mit Standardwerten initialisieren. Der Punkt ist, dass, wenn Sie dies tun wollen:
void foo(){ CClass someClass; someClass.DoSomething(); }
wird niemand die Felder Ihrer Klasse initialisieren und es werden unsinnige Werte angezeigt.
Und das für Zucker:
Nein, ich habe die Definitionen fast aufgegeben, ich möchte nur nichts einpacken, wie ich vor ein paar Wochen schrieb - ich möchte erst einmal reinen OOP-Stil-Code sehen, Flexibilität und Möglichkeiten bewerten
HH: Ich habe gerade Nachkommen bei der Erstellung in define verpackt, um nicht die gleiche Initialisierung auf 3 Zeilen zu schreiben, es ist einfacher, Methoden später hinzuzufügen, d.h. im Quellcode auf einer Zeile so weit
Igor, schauen Sie sich dieses Beispiel an, ich glaube, das ist es, was Sie fragen.
nein, ich meine das Äquivalent in c# - Operator ?? (Null-Join-Operator), etwas ähnliches in der Logik möchte ich im C++-Stil sehen
UPD:
Ich empfehle dringend, alle Felder einer Klasse im Konstruktor mit Standardwerten zu initialisieren. Der Punkt ist, dass, wenn Sie dies tun wollen:
Wenn Sie um ein Makro bitten, wird niemand die Felder Ihrer Klasse initialisieren, und es wird unsinnige Werte geben.
das ist, was ich tat, Konstruktor mit Initialisierung alles und alles in der Basisklasse, Nachkommen initialisieren die Basisklasse:
deshalb habe ich es in ein Makro verpackt, damit ich nicht vergesse, es richtig zu initialisieren ))))
Nein, ich habe die Definitionen fast aufgegeben, ich möchte nur nichts einpacken, wie ich vor ein paar Wochen schrieb - ich möchte erst einmal reinen OOP-Code sehen, Flexibilität und Möglichkeiten bewerten
ZS: nur umhüllte Nachkommen in define bei der Erstellung, um nicht die gleiche Initialisierung auf 3 Zeilen zu schreiben, ist es einfacher, Methoden später hinzuzufügen, d.h. im Quellcode auf einer Zeile so weit
nein, ich meine das Äquivalent in c# - Operator ?? (Null-Join-Operator), möchte ich etwas Ähnliches in der Logik im C++-Stil sehen
Ihre Weigerung, den Präprozessor einzusetzen, ist vergeblich. Zusammen mit Vorlagen sind sie die mächtigsten Werkzeuge. Es scheint keine Entsprechung des Operators ?? zu geben. C++ ist in dieser Hinsicht etwas härter im Nehmen.
Ich bin immer noch in einem Kampf für reine OOP-Stil, ich möchte alle OOP-Techniken zu lernen, während es ein Asset auf dem Forum;)
Mit dem Präprozessor bin ich auf dem Laufenden, aber ... Ich denke, ich sollte es nicht missbrauchen, zumindest nicht mein Stil, ich könnte es vermasseln, und ich werde sicherlich nicht in der Lage sein, Code mit mehreren Makrosubstitutionen zu lesen, und wie man nach Fehlern sucht... nun, es ist einfacher, neu zu schreiben - also, noch nicht notwendig
Vorlagen... Nun, ich mag nicht, was die Entwickler in SB anbieten, ich habe sie alle durchgesehen, es ist schwer zu sagen, zu welchem Zweck sie in SB aufgenommen wurden, vielleicht ist ihre Zeit noch nicht gekommen
über die Portierung von C++-Vorlagen nach MQL - es ist an der Zeit, wie die Diskussion gezeigt hat, dass in den meisten Fällen C++-Vorlagen eine Feinabstimmung für MQL erfordern - es ist einfacher, zu .dll zurückzukehren und MQL nicht zu stören ))))
Ich bin immer noch in einem Kampf für reine OOP-Stil, ich möchte alle OOP-Techniken zu lernen, während es ein Asset auf dem Forum;)
Mit dem Präprozessor bin ich auf dem Laufenden, aber ... Ich denke, ich sollte es nicht missbrauchen, zumindest nicht mein Stil, ich könnte es vermasseln, und ich werde sicherlich nicht in der Lage sein, Code mit mehreren Makrosubstitutionen zu lesen, und wie man nach Fehlern sucht... nun, es ist einfacher, neu zu schreiben - also, noch nicht notwendig
Vorlagen... Nun, ich mag nicht, was die Entwickler in SB anbieten, ich habe sie alle durchgesehen, es ist schwer zu sagen, zu welchem Zweck sie in SB aufgenommen wurden, vielleicht ist ihre Zeit noch nicht gekommen
über die Portierung von C++-Vorlagen nach MQL - es ist an der Zeit, wie die Diskussion gezeigt hat, dass in den meisten Fällen C++-Vorlagen eine Feinabstimmung für MQL erfordern - es ist einfacher, zu .dll zurückzukehren und MQL nicht zu stören ))))
Auf diese Weise können Sie selbst Vorlagen schreiben.)))
Ja, ))))
Ich habe fertig lesen Sie die Hilfe und übersprungen Override, Gott sei Dank alles in Makros ist, bearbeitet, na ja, genau in einem copy-paste
UPD:
Nein, das ist es nicht, es wurde für die Erlaubniskontrolle selbst ausgegeben, keine Notwendigkeit für eine öffentliche Methode!
Und dann gibt es noch das hier, für Zucker:
Ich wollte schreiben, was ich früher hatte, anstatt
Es war so:
erinnerte mich aber daran, wie man Makro-Ersetzungen in MQL überprüft
2019.09.16 22:57:42.837 tst (EURUSD,H1) a = 1
2019.09.16 22:57:42.837 tst (EURUSD,H1) POINTER_INVALID = 0
2019.09.16 22:57:42.837 tst (EURUSD,H1) NULL = 0
und wenn ich mich richtig erinnere, war es Anfang des Jahres möglich, NULL in das Protokoll zu drucken und dort 0 zu erhalten, jetzt erscheint ein Fehler
D.h. das Verhalten NULL as if sollte sich in Zukunft nicht ändern, aber was dort anstelle von NULL ersetzt wird, ist nicht klar, wahrscheinlich wenn diese Situation jetzt geprüft wird, wie geschriebenif(CheckPointer(m_order)==POINTER_INVALID)) ) ist es sozusagen der richtige Code))