Problem mit Pointern



  • Hallo,

    habe ein kleines Problem mit Pointern , was ich alledings nicht lösen kann.

    Habe eine Methode:

    bool MTServiceBusSenderEmpfaenger::Lade MAdapter* poAdapter )
    {
        poAdapter = m_poServiceBusService->GibAdapter( ); 
    }
    

    Diese Methode wird hier gerufen:
    [cpp]

    void RufeMethode()
    {
    MAdapter* poAdapter = 0;
    if( !Lade( ( poAdapter )
    {
    .....
    }
    Ich hätte jetzt gedacht , dass ich in der RufeMethode den Adapter aus der Methode <Lade> habe. Aber das Verhalten ist so , als ob ich in der Methode
    <Lade> einen lokalen Zeiger habe.
    d.h. wenn ich die Methode <Lade> verlasse , istt mein Zeiger in RufeMethode NULL.

    Kann mir da jemand helfen ?

    Viele Grüße ,
    Elke



  • Davon abgesehen dass Deine Klammernpaare alles andere als balanciert sind, ist der Zeiger in der Laden-Methode nur eine lokale Kopie (Call-By-Value). Du musst eine Referenz auf den Zeiger übergeben, damit der Zeiger auch geändert werden kann.

    bool MTServiceBusSenderEmpfaender::Lade(MAdapter*& poAdapter)
    

    Der Rest vom Code kann gleich bleiben, die Referenzübergabe sorgt jetzt dafür dass der übergebene Zeiger geändert wird und nicht dessen lokale Kopie.



  • Hallo LordJaxon,

    vielen Dank.

    Es funktioniert !

    Und die 2 Klammer habe ich einfach vergessen. War aber nicht so schlimm
    im Vergleich mit Pointern , oder ? *grins.

    Viele Grüße,
    Elke


Anmelden zum Antworten