Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CPtrList & Structs?

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
27.02.2007, 08:56 Uhr
~MVP
Gast


Hallo!

Ich habe eine kurze Frage und zwar, gibt es eine Möglichkeit Structs in eine CPtrList einzufügen?

Mein Struct ist so definiert:


C++:
typedef struct MyStruct
{
    CString strTest;
    int     iTest;    
}MyStruct;



Dieses Structs füll ich aus und füg sie der CPtrList hinzu:


C++:
void CTest::FillStruct(CPtrList &ptrList)
{
        MyStruct s;
      
        s.strTest = "Test";
        s.iTest = 1;

        ptrList.AddTail(&s);
}



Wenn ich nun versuche, in der Funktion die FillStruct aufruft, die CPtrList auszulesen, funktioniert das nicht. Ich bekomm nicht die richtige Werte raus.

Ausgelesen wird folgend:


C++:
POSITION pPos = ptrList.GetHeadPosition();
MyStruct s;

    while(pPos)
    {
        s = (MyStruct*)ptrList.GetNext(pPos);
    }



Hat jemand eine Idee?

Danke im voraus

LG
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.02.2007, 08:59 Uhr
~MVP
Gast


Sorry, .. der letzte Abschnitt sollte so lauten:


C++:
MyStruct *s = NULL;

POSITION pPos = ptrList.GetHeadPosition();

while(pPos)
{
        s = (MyStruct*)ptrList.GetNext(pPos);
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.02.2007, 10:41 Uhr
jencas



Grundsätzlicher Fehler:


Code:
void CTest::FillStruct(CPtrList &ptrList)
{
        MyStruct s; // lokale Variable
      
        s.strTest = "Test";
        s.iTest = 1;

        ptrList.AddTail(&s);
        // hier wird die lokale Variable s zerstört
        // und Dein Pointer in prtList zeigt ins Nirvana
}



Du solltest a) Dir mal ein C++ Buch durchlesen (Lebensdauer von Variablen) und b) eher std::list<MyStruct*> benutzen.

Dieser Post wurde am 27.02.2007 um 10:42 Uhr von jencas editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.02.2007, 11:01 Uhr
~MVP
Gast


Danke für die schnelle Antwort.

Hm, wie blöd von mir. CPtrList hält nur den Pointer, nicht das ganze Objekt.

Funktioniert jetzt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: