Ich programmiere gegen eine externe Bibliothek, die eine statische Callback-Funktion erfordert. Ich habe meinen Callback als statisch deklariert, aber dann verliere ich den Zugriff auf die Objekteigenschaften, die ich mit diesem Callback ändern möchte.Zugriff auf Eigenschaften des Objekts von der statischen Methode
Gibt es eine Möglichkeit, wie kann ich einen statischen Rückruf erstellen, während ich auf meine aktuellen Objekteigenschaften zugreifen kann? Die Bibliothek, die ich verwende, ist die openInventor-Bibliothek. Die Callback-Verkabelung bis wird mit dem folgenden Code getan:
SoSelection *selNode = new SoSelection;
selNode->addSelectionCallback(MyClass::selCallback);
'userData' kann für diesen Zweck reserviert werden. Zu überprüfen, aber 'MyClass * obj = static_cast (userData)' kann Ihnen einen Zugriff auf 'obj-> classProperty' geben. Sie sollten die Aufrufe Ihrer Callback-Funktion überprüfen, um zu wissen, ob und wie das Objekt übergeben wird. –
Franck
_Wie kann ich einen statischen Callback erstellen, während ich auf meine aktuellen Objekteigenschaften zugreifen kann? Nun, das ist der Grund, warum Sie nicht aus einem statischen Kontext auf nicht statische Eigenschaften/Methoden zugreifen können. Statische Methoden/Eigenschaften sind für alle Instanzen einer Klasse üblich, und Sie haben möglicherweise Hunderte von Instanzen erstellt. Also, wie entscheidest du, was ist _current object_ aus einem statischen Kontext? In der Regel wird ein Zeiger auf das Objekt an die statische Methode übergeben. Dann können Sie auf die Eigenschaften des Objekts zugreifen, an dem Sie interessiert sind. –