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