This is probably a silly error, but it's driving me nuts trying to fix it.
I have a struct:
struct MarkerData
{
int pattId;
unsigned short boneId;
Ogre::Matrix4 transToBone;
Ogre::Vector3 translation;
Ogre::Quaternion orientation;
MarkerData(int p_id, unsigned short b_id, Ogre::Matrix4 trans)
{
pattId = p_id;
boneId = b_id;
transToBone = trans;
}
};
And a class:
class TrackingSystem
{
public:
void addMarker(int pattId, unsigned short boneId, Ogre::Matrix4 transToBone);
private:
std::vector <MarkerData> mMarkers;
};
Now, in the addMarker method:
void TrackingSystem::addMarker(int pattId, unsigned short boneId, Ogre::Matrix4 transToBone)
{
mMarkers.push_back(MarkerData(pattId,boneId,transToBone));
}
This push_back causes an access violation "Unhandled exception at 0x00471679 in OgreAR.exe: 0xC0000005: Access violation reading location 0x00000018.".
As a test, I tried this:
void TrackingSystem::addMarker(int pattId, unsigned short boneId, Ogre::Matrix4 transToBone)
{
std::vector <MarkerData> test;
test.push_back(MarkerData(pattId,boneId,transToBone));
}
This works fine.
What am I doing wrong?! Thanks!
Chances are high that the TrackingSystem
object on which you're calling addMarker
is dead (and that the this
pointer is invalid. Either it went out of scope, delete was prematurely called, or it was never properly created (the pointer is still null).
This is even more likely since the push_back to a local vector works fine.