Ich bin mir nicht sicher, was ich davon machen soll - bitte sagen Sie mir, was mit dem Code unten falsch ist. Ich habe meinen Code geändert, um ihn auf die einfachsten Bedingungen zu reduzieren. Es gibt einen std :: vector mit einer Menge MyNode-Objekten. Der erste Schritt besteht darin, einen konstanten Verweis auf eines der Datenelemente eines dieser Knoten zu erhalten (Daten m_data) - im Beispiel unten gibt es nur einen Knoten, bevor der zweite Knoten eingefügt wird, wie unten gezeigt:C++ Referenz ändert sich wenn push_back neues Element zu std :: vector
const cv::Data& currData = m_nodesVector[currIndex].GetData();
MyNode node(...);
m_nodesVector.push_back(node);
Bei genau dem vector :: push_back Aufruf ändert sich der Wert von currData !! Ich verstehe es einfach nicht. Wie kann das Einfügen eines neuen Knotens in den Vektor den Wert auf die Daten des ersten Knotens ändern? !! Beachten Sie, dass sich der Wert beim "Erstellen" des 2. Knotens nicht ändert, sondern bei der Einfügeoperation in den std :: vector. Ich meine, ich nehme an, dass std :: vector etwas Speicher neu mischen kann, aber das sollte das Referenzrecht nicht ändern ??
Compiler = VS 2012
Danke Jungs. Sehr geschätzt.