小编Jac*_*ack的帖子

矢量push_back访问冲突

这可能是一个愚蠢的错误,但它让我疯狂地试图修复它.

我有一个结构:

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;
 }
};
Run Code Online (Sandbox Code Playgroud)

一节课:

class TrackingSystem
{
 public:
  void addMarker(int pattId, unsigned short boneId, Ogre::Matrix4 transToBone);

 private:  
  std::vector <MarkerData> mMarkers;
};
Run Code Online (Sandbox Code Playgroud)

现在,在addMarker方法中:

    void TrackingSystem::addMarker(int pattId, unsigned short boneId, Ogre::Matrix4 transToBone)
{
    mMarkers.push_back(MarkerData(pattId,boneId,transToBone));
}
Run Code Online (Sandbox Code Playgroud)

此push_back导致访问冲突"OgreAR.exe中0x00471679处的未处理异常:0xC0000005:访问冲突读取位置0x00000018.".

作为测试,我尝试了这个:

void TrackingSystem::addMarker(int pattId, unsigned short boneId, Ogre::Matrix4 transToBone)
    {
        std::vector <MarkerData> test;
        test.push_back(MarkerData(pattId,boneId,transToBone)); …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector push-back

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

push-back ×1

stl ×1

vector ×1