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)


Anmelden zum Antworten