Der Versuch, typedef auf eine Klasse Funktion anwenden bekommt einen Fehler Zeiger auf diesen Funktionstyp wird noch nicht unterstützt, versuchte die Anweisungen oben, aber da es nicht für was und keine Kommentare angezeigt wird, nichts funktioniert.
Versucht, typedef auf eine Klassenfunktion anzuwenden, Fehler Zeiger auf diesen Funktionstyp wird noch nicht unterstützt, versuchte die Anweisungen oben, aber da es nicht angezeigt wird, was es für und keine Kommentare, nichts funktioniert.
Der Versuch, typedef auf eine Klasse Funktion anwenden bekommt einen Fehler Zeiger auf diesen Funktionstyp wird noch nicht unterstützt, versuchte die Anweisungen oben, aber da es nicht für was und keine Kommentare angezeigt wird, nichts funktioniert.
Es stellt sich die Frage: Wenn man das nicht kann, warum schreibt man dann Funktionen in eine Klasse, die Funktionen annimmt? Außerdem müssen Sie manchmal eine Schnittstelle implementieren, und manchmal wissen Sie nicht, welche Funktion Sie aufrufen sollen.
Es stellt sich die Frage: Wenn man das nicht kann, warum schreibt man dann Funktionen in eine Klasse , die Funktionen annimmt? Außerdem müssen Sie manchmal eine Schnittstelle implementieren, und manchmal wissen Sie nicht, welche Funktion Sie aufrufen sollen.
Als Parameter wird ein Zeiger auf eine Funktion übergeben. Wie ich sehe, hat noch niemand herausgefunden, wie man das mit Klassen machen kann. Es ist mir auch immer noch nicht klar, warum ein Zeiger auf eine Klasse zurückgegeben werden sollte.
Hier sind interessante Beispiele, die aber nichts mit meiner Frage zu tun haben.
#property strictclass CStrategy;
typedefbool (*SignalFn)(CStrategy*);
// Global function definitionsbool IsBuySignal(CStrategy*ptr) { return ptr.IsBuySignal(); }
bool IsSellSignal(CStrategy*ptr) { return ptr.IsSellSignal(); }
// Create an abstract base classclass CStrategy
{
public:
virtualbool IsBuySignal(void)=0;
virtualbool IsSellSignal(void)=0;
};
// Derived classclass Strat1 : public CStrategy
{
public:
// Implement the required functionsbool IsBuySignal(void) { returntrue;}
bool IsSellSignal(void) { returntrue;}
};
voidOnStart()
{
// instantiate a class
Strat1 strat1;
// Global functions work as expected
SignalFn ptrSignalFn; // pointer to a signal function
ptrSignalFn = IsBuySignal;
if ( ptrSignalFn(&strat1) ) { Print("Is Buy"); }
}
Ich habe auch etwas Ähnliches im Leitfaden gesehen, aber ich habe diese Seiten bereits geschlossen, da mir die Hände weh tun und ich zu tun habe.
Wie kann ich einen Zeiger aufeine Klassenmethode erstellen?
Sie müssen einen Zeiger auf eine_int undint_ Funktion erstellen.
In mql4 wird hier etwas über Zeiger und Klassen beschrieben(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer), aber es gibt keine Kommentare, es ist nicht klar, wofür es ist und was es tut. Ohne Klassen ist es einfach, einen Zeiger mit typedef zu deklarieren, aber ich möchte verstehen, wie es in Klassen funktioniert.Wie kann ich einen Zeiger aufeine Klassenmethode erstellen?
Sie müssen einen Zeiger auf eine_int undint_ Funktion erstellen.
In mql4 wird hier etwas über Zeiger und Klassen beschrieben(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer), aber es gibt keine Kommentare, es ist nicht klar, wofür es ist und was es tut. Ohne Klassen ist es einfach, einen Zeiger mit typedef zu deklarieren, aber ich würde gerne verstehen, wie es in Klassen funktioniert.Sie können nicht
https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast
https://www.mql5.com/ru/docs/basis/types/casting#dynamic_cast
Falsch. Eine Person benötigt einen Zeiger auf eine Methode einer Klasse, nicht einen Cast auf einen Erben.
es gibt keine andere Möglichkeit - entweder prozeduraler Stil ohne Zugriffskontrolle oder OOP mit Zugriffs- und Typkontrolle
ok, macht nichts, der Autor hat immer hochspezialisierte Probleme ;)
Wie kann ich einen Zeiger aufeine Klassenmethode erstellen?
Sie müssen einen Zeiger auf eine_int undint_ Funktion erstellen.
In mql4 wird hier etwas über Zeiger und Klassen beschrieben(https://docs.mql4.com/ru/basis/types/this,https://docs.mql4.com/ru/basis/types/object_pointers,https://docs.mql4.com/ru/common/getpointer), aber es gibt keine Kommentare, es ist nicht klar, wofür es ist und was es tut. Ohne Klassen ist es einfach, einen Zeiger mit typedef zu deklarieren, aber ich würde gerne verstehen, wie es in Klassen funktioniert.Ich frage mich nur: Wie wollen Sie es verwenden?
Warum müssen Sie einen Zeiger auf die gesamte Klasse speichern? Hier ist ein Beispiel: https://docs.mql4.com/ru/basis/types/this
Was macht man danach damit?
Sie können nicht
Es stellt sich die Frage: Wenn man das nicht kann, warum schreibt man dann Funktionen in eine Klasse, die Funktionen annimmt? Außerdem müssen Sie manchmal eine Schnittstelle implementieren, und manchmal wissen Sie nicht, welche Funktion Sie aufrufen sollen.
Es stellt sich die Frage: Wenn man das nicht kann, warum schreibt man dann Funktionen in eine Klasse , die Funktionen annimmt? Außerdem müssen Sie manchmal eine Schnittstelle implementieren, und manchmal wissen Sie nicht, welche Funktion Sie aufrufen sollen.
Wie funktioniert das?
Wie funktioniert das?
Als Parameter wird ein Zeiger auf eine Funktion übergeben. Wie ich sehe, hat noch niemand herausgefunden, wie man das mit Klassen machen kann. Es ist mir auch immer noch nicht klar, warum ein Zeiger auf eine Klasse zurückgegeben werden sollte.
Hier sind interessante Beispiele, die aber nichts mit meiner Frage zu tun haben.
Ich habe auch etwas Ähnliches im Leitfaden gesehen, aber ich habe diese Seiten bereits geschlossen, da mir die Hände weh tun und ich zu tun habe.