Ich habe eine Aufgabe, ein Objekt Stos zu schaffen, die einen Haufen von Objekten Obiekt verfügen würden, auf denen ich Dinge hinzufügen könnte, wie ich will.Vektor von Objektzeiger gibt ungeradee Werte
Um das Programm besser dynamische Arrays zu unterstützen, entschied ich mich für einen Vector. Die gesamte Implementierung scheint perfekt zu laufen, der zurückgegebene Wert ist komplett aus. Hier ist ein Beispiel mit Code:
class Obiekt {
private:
int id;
public:
Obiekt::Obiekt(int i) {
id = i;
}
void Obiekt::display() {
cout << "This object has id of: " << id << endl;
}
};
class Stos {
private:
vector < Obiekt* > stos;
public:
Stos::Stos(Obiekt n) {
add(n);
}
void Stos::add(Obiekt n) {
stos.push_back(&n);
}
void Stos::display() {
cout << endl << "===HEAP DISPLAY===" << endl;
for (int i = 0; i < stos.size(); i++) {
stos[i]->display();
}
}
};
void Zad1()
{
Obiekt obj1(5);
Obiekt obj2(23);
Stos s1(obj1);
s1.add(obj2);
s1.display();
getchar();
}
Und das Ergebnis Wesen:
=== HEAP DISPLAY ===
Dieses Objekt hat id: -858993460
Dieses Objekt hat eine ID von: 9805925
Ich bin kein cpp Experte, und glaube, das Problem ist mit dem stos.push_back(&n)
Teil verbunden, aber ich kann nicht den Moment fangen die ID wird so verzerrt.
Es ist wahrscheinlich eine noob Frage, so leid für den Start.
Jede Hilfe wäre erstaunlich.
@ O'Neil Arbeitete !! Vielen Dank. Könnten Sie das als Antwort posten? – aln447
Antwort geschrieben :) –
Die einfachste Lösung ist, den Vektor zu machen 'vector < Obiekt > stos;' –