我正在尝试将 vector 变量用作全局变量并将其外部化以在另一个文件中使用它,这是我的代码
头文件:
using namespace cv;
typedef struct objectparamstruct
{
std::vector<KeyPoint> kp_object;
Mat des_object;
char label[10];
}objectparamstruct;
我的头文件没有 vector 变量的定义。
main.cpp
std::vector<Point2f> obj_corners(4);
函数.cpp
extern std::vector<Point2f> obj_corners(4);
但是我收到以下错误:
errorLNK:2005:.....already defined in functions.obj
errorLNK1169: one or more multiply defined symbols found
我是 C++ 的新手,有人可以帮助我吗。
最佳答案
extern std::vector<Point2f> obj_corners(4);
是一个定义,因为你提供了一个初始化器。在程序中多次定义 obj_corner
会伤害 odr-rule .相反,为了遵循 odr-rule ,您想要的是一个声明:
函数.cpp
extern std::vector<Point2f> obj_corners;
这只是将对象的名称 obj_corners
介绍给您的翻译单元,告诉链接器它是在另一个翻译单元(在本例中为 main.cpp )中定义的。
关于c++ - 全局 vector 变量的 Extern 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42487521/