Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Verwirrung bei Übergabe von Pointer

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.03.2009, 15:31 Uhr
cmos



Hallo,
gegen ist folgendes Szenario


C++:
class Test2
{
    private:
        int c ;
    public:
        Test2()
        {
            c=0;
        }
};
class Test1
{
    private:
        Test2* test2;
    
    public:
        Test1()
        {
            test2 = new Test2;
        }
        ~Test1()
        {
            delete test2;
        }
        void GetPtr(Test2* PtrTest)
        {
            PtrTest = test2;
        }
        
};

int main()
{
    Test2 *pTest = NULL;
    Test1 t1;
    t1.GetPtr(pTest);
    return 0;
}




Mein Problem ist, dass pTest NULL bleibt. Woran liegt das ?
Ob das nun ein Pointer auf ein Array oder ein Objekt ist,
sollte doch egal sein, oder ? Wieso ist das NULL ?


Grüße & Danke,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.03.2009, 15:46 Uhr
RedEagle



du musst das über einen Zeiger auf den Zeiger lösen:

C++:
//...
void Test1::GetPtr(Test2** PtrTest)
{
*PtrTest = test2;
}
//...

int main()
{
    Test2 *pTest = NULL;
    Test1 t1;
    t1.GetPtr(&pTest);
    return 0;
}


Du übergibts in main die Adresse des pointers auf Test2. In GetPtr wird unter dieser Adresse dann die Adresse des objekt's test2 gespeichert.
--
MFG RedEagle

Dieser Post wurde am 20.03.2009 um 15:47 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.03.2009, 16:18 Uhr
cmos



Danke für die schnell Hilfe.
Also verhält sich das ähnlich, als würde man z.b. eine Integervariable ohne
Referenz übergeben und nur lokal im Funktionskörper den Wert zuweißen (?)

Grüße,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.03.2009, 22:15 Uhr
0xdeadbeef
Gott
(Operator)


Es ist genau das selbe, ja. Übrigens würde ich den Zeiger eher als Referenz übergeben, also

C++:
        void GetPtr(Test2*& PtrTest)
        {
            PtrTest = test2;
        }


beziehungsweise gleich als Rückgabewert:

C++:
Test2 *GetPtr() {
  return test2;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: