C++ extern object 数组

c++ extern object array

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

但我得到:

error: undefined Reference to "myArray" on main_header.hpp

下面的代码是重现问题的最少代码,在这里我省略了 header 守卫和不重要的代码。

这是我的设置:

class.hpp

class myClass
{
  //Class Declaration
};

/* end of file */

Declarations.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 */

main.cpp

#include "main_header.hpp"

void function()
{
  setup();
  myArray[0].test();
}

/* end of file */

如何正确声明一个外部 object 数组?

提前致谢!

Cheche Romo

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

编辑2:

如果在我的 Declarations.cpp 我添加

int var = 0;

然后在 main_header.hpp 我添加

extern int var;

然后在主 cpp

int a = var;

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

将main_header.hpp更改为:

extern myClass myArray[];