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