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!


Anmelden zum Antworten