Zeiger als Methodenparameter
-
Ich rufe die Methode einer DLL, die in mein Projekt eingebunden ist, auf. Diese DLL-Methode sieht so aus:
class __declspec(dllexport) OI { //... Tool** mTool = new Tool*[2]; WORD GetActiveTool(Tool* ToolHandler) { ToolHandler = mTool[0]; return 0; }
Die Methode rufe ich von meinem Hauptprogramm so auf:
OI* oi = new OI(); Tool* actTool = NULL; WORD ret = oi->GetActiveTool(actTool);
Nun sollte eigentlich der Zeiger actTool die Adresse des Tool-Zeigers 'mTool[0]' aus der DLL haben. Tut es aber nicht. actTool hat weiterhin den Wert 0x00000000.
Wenn ich das Programm debuge wird aber komischerweise in der GetActiveTool-Methode dem Funktionsparameter 'ToolHandler' die Adresse des Tool-Objekts richtig zugewiesen.
Was mache ich falsch und wie kann ich es besser machen.
Anmerkung: Ich bin auf diese Definition der GetActiveTool-Methode festgelegt. Andere Methodendefinitionen helfen mir also nicht.
-
FrodoSix schrieb:
... WORD GetActiveTool(Tool* ToolHandler) { ToolHandler = mTool[0]; return 0; } ...
damit veränderst du nur den parameter selber. wenn du einen pointer verändern willst, dann könnteste es so machen:
WORD GetActiveTool(Tool** ToolHandler) { *ToolHandler = &mTool[0]; return 0; }
-
Stimmt, das war's... mein Denkfehler.
Viele Dank auch!