vector größe in klasse
-
Hallo
nein du hast mit reserve dem vector gesagt das er den Speicher für 10 Objekte vorbereiten soll! Das kannst du gerne nachprüfen, lass dir mal nach dem reserve die Werte von .size und .capacity ausgeben...
Gültoge Elemente fügst du mit assign oder push_pack ein. Steht auch alles in der verlinkten Referenz.
bis bald
akari
-
Hm... ja die Befehle kenne ich, jedoch hab ich das bis jetzt immer nur mit einem vector z.b. nur auf dem typ INT gemacht. Da konnte ich mit push_back() immer ein Element hinzufügen.
Was muss ich denn bei push_back() in die Klammern schreiben, damit ich mehrere Elemente, die ja in meinem Vector sind, reinschreiben kann?
Es gibt die Elemente: Name, Beschreibung und Nummer.
Ach ja: Wenn ich meinenvector.push_back(IRGENDWAS) eingebe, sagt der Compiler, das "push_back" kein Element von meinvector ist.
Was mach ich denn da falsch?
-
Hallo
dazu benutzt du die erste Variante von assign.
Das mit dem push_back sollte funktionieren. Bist du sicher das meinvector wirklich ein std::vector ist?
Brich den Fehler mal auf ein Minimalbeispiel herunter und poste hier den Quellcode.bis bald
akari
-
Hi, also der Fehler lässt sich leider nicht minimieren. Der Fehler ist schon "elementar".
Hier mal der Komplette Quell-Code, macht noch gar nix, soll nur halt nen Vector erstellen in der Klasse und ein Element hinzufügen.
class Artikel { public: Artikel() { artikel.reserve(10); artikel[0].name="Test"; } private: vector<Artikel> artikel; int position; string nummer; string preis; string name; string beschreibung; }; int main(void) { Artikel Artikel1; system("pause"); }Wenn ich
artikel[0].name="Test";herausnehme bzw. auskommentiere, stürzt das Programm nicht ab. Also geht die größenreservierung glatt, jedoch der Zugriff auf ein Element von meinem vector bzw. die befüllung nicht.
Ich hoffe ihr wisst was ich meine.
Danke
-
Hallo
das habe ich dir doch schon gesagt, das mit dem Reserve keine Elemente erschaffen werden, sonder nur der Platz im voraus!
artikel.assign(10, Artikel());Übrigens bekommst du so mit deiner Klasse einen schönen Stacküberlauf.
Weil du in dem Konstruktor von jedem Artikel 10 weitere Artikel erstellen willst, die jeder wieder zehn Artikel erstellen...bis bald
akari
-
Bist du dir sicher, dass wirklich jeder Artikel 10 andere Artikel hat? Ich würde mal sagen, dass das logisch falsch ist. Was willst du (damit) erreichen?