bei push_back: Unbehandelte Ausnahme...Access Violation
-
in .h
struct F3DmedSPointProperty{ double m_adPoint[3]; //Koordinaten des Punktes bool m_bOnEdge; //Auf Modellface-Kante oder nicht bool m_bDone; //Bearbeitet int m_nModelFaceIndex; //Welche Face vom Modell int m_nCutFaceIndex; //Weche Face des Schnittmodells }; vector<F3DmedSPointProperty> m_PointProperties;
in .cpp
F3DmedSPointProperty pointProperty; //Das klappt: pointProperty nimmt Werte auf this->ArrangeProperties(nTempPoints, false, false, nModelFaceIndex, nCutFaceIndex, pointProperty); //Das nicht mehr: Es sollen bebiebig viele pointProperty aufgenommn werden m_PointProperties.push_back(pointProperty);
bei push_back: Unbehandelte Ausnahme...Access Violation
eigentlich kommt bei: "m_PointProperties.egal_was" diese Meldung
-
Möglicherweise ist vorher irgendwo ein underflow-Fehler aufgetretten, zu viel pop_back aufgerufen?
-
Apropos, Variablen definiert man in der cpp-Datei und nicht im Header, falls es sich um eine globale Variable handelt.
-
Also ich würde Pointer vom Typ F3DmedSPointProperty aufnehmen und keine Objekte vom Stack.
vector<F3DmedSPointProperty*> m_PointProperties;
Und dann die Points im Heap anlegen:
F3DmedSPointProperty *pointProperty = new F3DmedSPointProperty; // blabla try { m_PointProperties.push_back(pointProperty); } catch(...) { std::cout << "Fehler beim hinzufügen von pointProperty\n"; }
-
entweder hast du irgend wo den Vector oder gleich den ganzen Heap geschrottet. Ein Tool wie Valgrind hilft dir ansonsten weiter.
Oder mach mal ein assert(m_PointProperties.size()); for jedes pop_back oder so was
@Shlo
das m_ Prefix deutet ja einen Member an@Artchi
wieso?