Naja, Dein Pointer sollte schon vom gleichen Typ sein wie die Klasse,
die Du da verwendest. Du legst einen Pointer vom Typ "Auto" an,
initialisierst ihn aber im Konstruktor einer Klasse COM mit dem
this-Pointer eines Objektes.
Dann wiederum versuchst Du in Deiner Interruptroutine wiederum
Memberfunktionen der Klasse Auto aufzurufen.
Angenommen, statt COM::COM stünde da Auto::Auto, dann würde das
prinzipiell funktionieren (sofern denn wenigstens ein Objekt vom Typ
Auto auch angelegt wird).
Jedoch wird Dein Pointer vom jeweils letzten Objekt des Typs Auto
überschrieben; solltest Du ein solches Objekt als automatische Variable
(also auf dem Stack) anlegen, dann zeigt Dein Pointer mit ziemlicher
Sicherheit irgendwohin ins Nirvana.
Der ganze Aufriss ist aber gar nicht nötig, da Du den Zeiger auf ein
Objekt auch völlig problemlos außerhalb des Objektes bestimmen kannst:
1 | // Das isser, der Zeiger
|
2 | Auto* pAuto = NULL;
|
3 |
|
4 | // Hier haben wir eine Instanz der Klasse Auto
|
5 | Auto MeinAuto;
|
6 |
|
7 | // hier wird der Zeiger initialisiert
|
8 | pAuto = &MeinAuto;
|
9 |
|
10 | // und hier wird der Zeiger verwendet
|
11 | if (pAuto)
|
12 | pAuto->Machwas();
|
Das hat den Vorteil, daß Du auch mehrere Objektinstanzen Deiner Klasse
verwenden und auseinanderhalten kannst.
Wichtig ist, daß die Memberfunktion Machwas() als "public" deklariert
ist, da sie sonst nicht außerhalb des Klassenkontextes aufgerufen werden
darf.