C++ 外部对象数组

c++ extern object array

本文关键字:数组 对象 外部 C++      更新时间:2023-10-16

我正在尝试创建一个外部对象数组,但我认为我遇到了链接问题。我在class.hpp文件上定义了一个类,在声明.cpp文件中,我包含类标头,然后继续创建该类的数组,然后在第二个头文件上,我将声明为extern的相同数组,此标头将包含在我需要使用它的地方,然后main_header.hpp文件用于初始化extern数组, 因此,它们可以在包含 main_header.hpp 的任何地方使用。

但我得到:

错误:未定义对 main_header.hpp 上的"myArray"的引用

下面的代码是重现该问题的最小代码,在这里我省略了标头保护和不重要的代码。

这是我的设置:

类.hpp

class myClass
{
//Class Declaration
};
/* end of file */

声明.cpp

#include "class.hpp"
myClass myArray[4];
/* end of file */

main_header.hpp

#include "class.hpp"
extern myClass *myArray;
/* end of file */

main_header.cpp

#include "main_header.hpp"
void setup()
{
for(uint8_t i = 0; i < 4; i++)
{
myArray[i] = myClass();
myArray[i].begin();
}
}
/* end of file */

主.cpp

#include "main_header.hpp"
void function()
{
setup();
myArray[0].test();
}
/* end of file */

如何正确声明外部对象数组?

提前感谢!

切切罗莫

编辑: 我正在PSoC Creator上使用g ++进行编译。

编辑2:

如果在我的声明中.cpp我添加

int var = 0;

然后在 main_header.hpp 上添加

extern int var;

然后在主CPP上

int a = var;

它显示 var 没有错误,只有 myArray 错误。

将 main_header.hpp 更改为:

extern myClass myArray[];