Unerklärliche Fehlermeldung bei der Verwendung von Listen :(
-
Hi,
Ich habe folglenden Code gschrieben:
#include <iostream> #include <list> using namespace std; class CRaumschiff { private: int m_ID; public: int ShowID () { return m_ID; } CRaumschiff (int ID) { m_ID = ID; } }; int main () { //Variables... list<CRaumschiff> lSchiffe; int Anzahl = 0; list<CRaumschiff>::iterator iter; CRaumschiff *Temp = NULL; cout << "Wieviele Raumschiffe sollen gebaut werden?" << endl; cin >> Anzahl; for(int i=0; i<Anzahl; i++) { Temp = new CRaumschiff(i+1); lSchiffe.push_back (Temp); } system ("PAUSE"); return 0; }
Und bekomme dabei follgende Fehlerausgabe:
1>------ Erstellen gestartet: Projekt: qqq, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>qq.cpp
1>c:\documents and settings\x\my documents\visual studio 2008\projects\qqq\qqq\qq.cpp(37) : error C2664: 'std::list<_Ty>::push_back': Konvertierung des Parameters 1 von 'CRaumschiff *' in 'const CRaumschiff &' nicht möglich
1> with
1> [
1> _Ty=CRaumschiff
1> ]
1> Ursache: Konvertierung von 'CRaumschiff *' in 'const CRaumschiff' nicht möglich
1> Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
1>Das Buildprotokoll wurde unter "file://c:\Documents and Settings\x\My Documents\Visual Studio 2008\Projects\qqq\qqq\Debug\BuildLog.htm" gespeichert.
1>qqq - 1 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Ich würde mich über Hilfe freuen
-
abcd schrieb:
error C2664: 'std::list<_Ty>::push_back': Konvertierung des Parameters 1 von 'CRaumschiff *' in 'const CRaumschiff &' nicht möglich
Lies dir diesen Fehler noch mal durch.
Du hast eine Liste des Typs list<CRaumschiff> nicht vom Typ list<CRaumschiff*> !Das gehört aber ins C++, nicht in das MFC-Forum.
cu André
-
Wenn Du Pointer speichern willst, musst Du die Liste auch entsprechend deklarieren:
list<CRaumschiff*> lSchiffe;
Auch müssen die mit new allozierten Objekte mit delete wieder freigegeben werden.
Übrigens wäre C++ das bessere Forum dafür gewesen.
Simon
Edit: zu spät.. :-))
-
Steht doch da:
Konvertierung des Parameters 1 von 'CRaumschiff *' in 'const CRaumschiff &' nicht möglich
Du legst mit new ein 'CRaumschiff *' an, Dein Container nimmt aber nur 'CRaumschiff' auf.
/e: noch spääääääääääääääää.......