S
Man war ich schon ewig nicht mehr hier im Forum.
Mirko, das hauptsächliche Problem an der Plugin Schnittstelle ist, dass es eine C Schnittstelle ist.
C++ Callback Schnittstellen sehen ein bisschen anders aus und können dann auch Klassenfuntionen sein. Wenn du u.a. mit ROS arbeitest, kannst du da ja mal rein schaun, da werden solche Konstrukte verwendet.
Das Beispiel, dass du von dmarc0001 verlinkt hast ist vielleicht ein ganz netter Ansatz.
Da das Interface, wie bei C-Schnittstellen nicht unüblich, die Datenkommunikation mit void-Pointern realisiert müssen die relevanten Daten in einer Klasse oder einem Struct gekapselt sein.
Auf dieser Datenstruktur kann dann gearbeitet werden. Aber die kommt jeweils aus der Callbackfuntion. Da wird keine globale Klasse parallel mit Daten befüllt, sondern halt immer auf der selben Instanz der einen Klasse gearbeitet, die in XPluginStart() instantiert worden ist.
Also kannst du eine "Working Class" erstellen:
class workingClass{
CFruit m_fruit;
CApfel m_apple;
CBirne m_pear;
CAuto m_car;
}
und diese Klasse dann ann deine registrierten Callbacks übergeben:
workingClass *testClass = new WorkingClass(...);
XPLMRegisterFlightLoopCallback(myCallbackmyfLoopCallback,1.0,static_cast<void *>(testClass) );
Ich hoffe, ich konnte ein bisschen zu deinem Verständnis beitragen.