c ++ extern对象数组

时间:2018-05-14 04:56:26

标签: c++ arrays object g++ extern

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

但我得到了:

  

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

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

这是我的设置:

  

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

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

提前致谢!

Cheche Romo

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

EDIT2:

如果在我的Declarations.cpp中,我添加

  

int var = 0;

然后在main_header.hpp上添加

  

extern int var;

然后在主cpp上

  

int a = var;

它显示var没有错误,仅适用于myArray。

1 个答案:

答案 0 :(得分:1)

将main_header.hpp更改为:

extern myClass myArray[];