C++ 获取代码中的分段错误

C++ 获取代码中的分段错误,c++,vector,error-handling,C++,Vector,Error Handling,尝试创建一个函数,该函数将用初始化对象填充对象向量。 请帮忙。 错误:分段错误核心转储 编辑: 好的,当尝试访问OBJ[0].age时,行中似乎出现了问题 还忘了Point2d函数来自OpenCV库,我不想添加它,但它们似乎不会以任何方式导致错误 #include <iostream> #include <vector> struct objtracker { int age; vector<int> frID; vector<Point2d>

尝试创建一个函数,该函数将用初始化对象填充对象向量。 请帮忙。 错误:分段错误核心转储

编辑:

好的,当尝试访问OBJ[0].age时,行中似乎出现了问题

还忘了Point2d函数来自OpenCV库,我不想添加它,但它们似乎不会以任何方式导致错误

#include <iostream>
#include <vector>

struct objtracker
{

int age;
vector<int> frID;
vector<Point2d> cent;
    objtracker()
    {
        age = 1;        
    }
    ~objtracker()
    {
    // Destroy ObjectTracker
    }
};

vector<objtracker> OBJ;

void create_new_tracker(vector<objtracker> OBJ,Point2d cent,int frameID,objtracker O){


    O.cent.push_back(cent);
    O.frID.push_back(frameID);


}
int main(){

    Mat Y;
    Y = imread("hor.jpeg",CV_LOAD_IMAGE_COLOR);
    Point2d J;

    J.x = 100;
    J.y = 100;
    int frameID = 100;
        objtracker O;
        create_new_tracker(OBJ,J,frameID,O);
        create_new_tracker(OBJ,J,frameID,O);
        create_new_tracker(OBJ,J,frameID,O);
        create_new_tracker(OBJ,J,frameID,O);
        create_new_tracker(OBJ,J,frameID,O);

    cout<<OBJ[0].age<<"\n";

return 1;   }

您是否愿意用一个有用的描述来代替您的咆哮,描述您的代码应该做什么以及它在哪里崩溃?接受更改:-。顺便说一句,传统的方法仍然有效,但是库应该让您更容易使用。参数objtracker O-这将是一个值参数。调用方的向量仍然是空的。OBJ在这段代码中从来没有填充过任何东西,所以下标操作符出现错误并不奇怪。建议和一些重新启动时间将是有序的?感谢您的关注,现在已经修复了更多的信息。好的,那么也许通过引用调用?我已经返回到上一次编辑。答案应该贴在答题框里,而不是问题里。所以通过参考传递?
   void create_new_tracker(vector<objtracker> OBJ,Point2d cent,int frameID,objtracker O){
O.cent.push_back(cent);
O.frID.push_back(frameID);
 }
      void create_new_tracker(vector<objtracker> &OBJ,Point2d cent,int frameID,objtracker O)
      {
         O.cent.push_back(cent);
         O.frID.push_back(frameID);
         OBJ.push_back(O);
       }