gpt4 book ai didi

c++ - 全局 vector 变量的 Extern 不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 01:32:50 24 4
gpt4 key购买 nike

我正在尝试将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com