Probleme mit list.insert
-
Hi!
Ich habe 2 Listen und wie die eine komplett an die andere dranhängen:
equi ist folgendermaßen definiertlist<Region *> *equi;
list<Region *>::iterator it = reg->equi->begin();
int capacity = this->size + reg->size;
this->equi->insert(this->equi->end(), *(reg->equi)->begin(), *(reg->equi)->end());Erhalte folgende Fehlermeldung:
e:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\list(574) : error C2664: 'void std::list<_Ty>::_Insert(std::list<_Ty>::iterator,const _Ty & )': Konvertierung des Parameters 2 von 'RegionSegmentation::Region' in 'RegionSegmentation::Region *const & ' nicht möglich
with
[
_Ty=RegionSegmentation::Region *
]
Ursache: Konvertierung von 'RegionSegmentation::Region' in 'RegionSegmentation::Region *const ' nicht möglich
Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
e:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\list(537): Siehe Verweis auf Instanziierung der kompilierten Funktionsvorlage 'void std::list<_Ty>::_Insert<_Iter>(std::list<_Ty>::iterator,_Iter,_Iter,std::forward_iterator_tag)'
with
[
_Ty=RegionSegmentation::Region *,
_Iter=std::allocator<RegionSegmentation::Region *>::value_type
]
e:\Dokumente und Einstellungen\Jennifer\Eigene Dateien\Visual Studio Projects\backup\2007\vers02_test\test2\test2\Region.cpp(44): Siehe Verweis auf Instanziierung der kompilierten Funktionsvorlage 'void std::list<_Ty>::insert<std::allocator<_Ty>::value_type>(std::list<_Ty>::iterator,_Iter,_Iter)'
with
[
_Ty=RegionSegmentation::Region *,
_Iter=std::allocator<RegionSegmentation::Region *>::value_type
]
main.cppWie kann ich das Problem beheben?
-
Anhängen einer Liste an das Ende einer anderen Liste funktioniert wie nachfolgend:
#include <list> #include <algorithm> #include <iostream> using namespace std; int main(int argc, char* argv[]) { list<int> a; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(4); list<int> b; b.push_back(5); b.push_back(6); b.push_back(7); b.push_back(8); copy(b.begin(), b.end(), back_inserter(a)); for (list<int>::iterator it = a.begin(); it != a.end(); ++it) cout << *it << endl; return 0; }
-
Danke für die Antwort, aber so geht es auch nicht.
Mit den Standarddatentypen funktionieren die Sachen ja immer, aber mit eigenen Klassen gibt es Probleme. Ziemlich nervig.
-
Wollte nur sagen, dass es jetzt mit beiden Methoden klappt.
Hab die kryptische Fehlermeldung, doch noch richtig interpretieren können ;-).