Globale <list>
-
Hallo,
gleich zu beginn: bin anfänger in c++ ^^So, das Problem: Ich hab eine Liste Global eingerichtet (Eine extra Header Datei(hier sind globale variablen enthalten) + zugehörige cpp datei(nur für die list) angelegt), die cpp Datei ist wie folgt aufgebaut:
[cpp]list<Ship*> iList;
list<Ship*>::iterator it;[code]Wenn ich aber ein Ship in die Liste legen will, kommt
error C2664: 'std::list<_Ty>::push_back' : cannot convert parameter 1 from 'Ship' to 'Ship *const & '
Wie kann ich dann da Objekte hinzufügen?
-
// So wie du deine Liste definiert hast, nimmt sie ja nur POINTER auf Ship auf list<Ship*> iList; // Das heißt du musst entweder direkt gleich nen Pointer pushen Ship *ship1; iList.push_back(ship1); // Oder zumindest mit dem &-Operator auf die Addresse verweisen Ship ship2; iList.push_back(&ship2);
-
ok, danke, das läuft, aber ich bekomme jetzt "undeclared identifiers"
-> in der Globale_Variablen.h stehen normale Variablen
-> in der Globale_Variablen.cpp hab ich die G_V.h inkludiert, und dort die Liste angelegt
-> in der Main.cpp kann ich nicht auf die Liste zugreifen
-
Wie soll ich die List global freigeben? Wenn ich sie ja wie bereits geschrieben, einfach nur reinschreibe, bekomme ich "undeclared identifier"
-
So, das wäre auch behoben (eine neue header + cpp datei erstellt), jetzt hab ich noch ein unresolved external symbol:
i_List.obj : error LNK2019: unresolved external symbol "public: void __thiscall
CSprite::MoveEx(int,int)" (?MoveEx@C_Sprite@@QAEXHH@Z) referenced in function "void __cdecl MoveList(int,int)" (?MoveList@@YAXHH@Z)Bezieht sich auf die Funktion MoveList, die das Sprite bewegt, also
(*iterator)->MoveEx
da bekomme ich ein unresolved external symbol
hat jemand eine ahnung, wieso?
danke im voraus
-
Problem gelöst, die ersten 2 ES entfernte ich indem ich die list in der cpp definiert / deklinierte
Bei der 3. war die Funktion nicht vorhanden (MoveEx)