push_back Fehler bei std::vector
-
Hi!
Ich hänge an einem Problem fest
und würde mich freuen, wenn mir jemand helfen könnte. Ich versuche es so gut wie möglich zu beschreiben.
Ich habe eine Struktur Point...und einen Vector mit Points.typedef std::vector<Point*> PointList;Nun will ich hier push_back benutzen:
this->vertexList.push_back(tri->vertex[0]);(noch zur Erläuterung tri ist Triangle und enthält Points...vertex[] ist das array was die Points enthälten
und vertexList ist vom Typ PointList)Nun bekomme ich bei dieser Zeile mit dem pushback-aufruf den Fehler:
error C2664: 'std::vector<_Ty>::push_back': Konvertierung des Parameters 1 von 'Point' in 'Point *const & ' nicht möglich with [ _Ty=Point * ]Ich hoffe meine Beschreibung ist nachvollziehbar
.Gruß!
-
Hi,
die Leute freuen sich hier immer, wenn man die Definitionen aller geposteten Variablen im Code sieht

-
funkycat13 schrieb:
und einen Vector mit Points.
typedef std::vector<Point*> PointList;Das ist ein Vektor mit Zeigern auf Points.
Nun will ich hier push_back benutzen:
funkycat13 schrieb:
vertex[] ist das array was die Points enthälten
vertex[] hat also Points, dein PointList erwartet aber Points*

Spare dir doch die Zeiger-Geschichte und mache das doch einfach so:
typedef std::vector<Point> PointList;
-
Oh ok!
Na dann kommt das hier noch nachträglich
v_VertexList vertexList;void Object::addTriangle(Triangle *tri) {...}in dieser Funktion ist der oben genannte push_back Aufruf drin...tri wird halt übergeben.
Hm...die Structs sind leider recht groß...mal noch der teil wo vertex[] herkommt:
struct TriangleIndex { ... Point vertex[3]; ... }Is das so erstmal ok? Wenn nicht poste auch gern noch mehr.
Mein Programm ist halt ziemlich komplex...deshalb kann ich nur versuchen die für die Frage relevanten Teile auszusuchen.
-
Gut, jetzt mach das was ich dir in meinem letzten Post, als letztes geschrieben habe und gut ist

-
Morgen!
Also erstmal danke für die Antwort.
Aber leider funktioniert das so nicht, ich hatte das glaube ich auch schon probiert...habe schon viele Varianten ausprobiert.Wenn ich das so mache:
typedef std::vector<Point> PointList;Bekomme ich an diversen anderen Stellen des Codes Fehler.
vor allem des öffteren den hier...mit dem ich nichts anfangen kann:
error C2440: 'Initialisierung': 'std::vector<_Ty>::iterator' kann nicht in 'std::vector<_Ty>::iterator' konvertiert werden with [ _Ty=Point ] and [ _Ty=Point * ]Was ich vielleicht auch noch erwähnen sollte.
Point und Triangle waren mal Klassen...da hat das selbe ohne Probleme funktioniert. Ich musste jetz aber, um die Klassen in ein schon bestehendes Programm einzufügen in Structs umwandeln...und nun geht es nicht mehr.
Denn Zusammenhang versteh ich eben nich so ganz.
Ändert sich da in Sachen Zeiger was, wenn man statt ner Klasse n Struct nimmt?
-
funkycat13 schrieb:
Wenn ich das so mache:
typedef std::vector<Point> PointList;Bekomme ich an diversen anderen Stellen des Codes Fehler.
vor allem des öffteren den hier...mit dem ich nichts anfangen kann:
Dann hast du noch irgendwo in deinem Code die Point*-Version rumfliegen.
Point und Triangle waren mal Klassen...da hat das selbe ohne Probleme funktioniert. Ich musste jetz aber, um die Klassen in ein schon bestehendes Programm einzufügen in Structs umwandeln...und nun geht es nicht mehr.
Dann hast du beim Umwandeln etwas falsch gemacht.
Ändert sich da in Sachen Zeiger was, wenn man statt ner Klasse n Struct nimmt?
Nein, da ändert sich gar nichts.
-
MFK schrieb:
Point und Triangle waren mal Klassen...da hat das selbe ohne Probleme funktioniert. Ich musste jetz aber, um die Klassen in ein schon bestehendes Programm einzufügen in Structs umwandeln...und nun geht es nicht mehr.
Dann hast du beim Umwandeln etwas falsch gemacht.
Danke...für eure Hilfe!
Das oben zitierte war jetz der Ausschlag dafür, dass ich an der richtigen Stelle gesucht habe.
Jetzt läufts :).
Ich bin vorher irgentwie nicht auf die Idee gekommen in der Structurdefinition nach dem Fehler zu suchen...hab an allen möglichen anderen Stellen gesucht gehabt.