c ++ внешний массив объектов - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь создать массив внешних объектов, но мне кажется, что у меня проблема со связыванием. У меня есть класс, определенный в файле class.hpp, в файле Declarations.cpp я включаю заголовок класса и приступаю к созданию массива класса, затем в моем втором файле заголовка у меня тот же массив, объявленный как extern, этот заголовок должен быть включен там, где мне нужно его использовать, тогда файл main_header.hpp используется для инициализации массива extern, поэтому их можно использовать везде, где включен main_header.hpp.

Но я получаю:

ошибка: не определено Ссылка на "myArray" на main_header.hpp

Приведенный ниже код является минимальным кодом для воспроизведения проблемы, здесь я опустил защиту заголовков и код, который не важен.

это мои настройки:

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

Как правильно объявить массив внешних объектов ??

Заранее спасибо!

Чече Ромо

редактирование: Я компилирую с g ++ на PSoC Creator.

edit2:

, если в моем заявлении.cpp я добавлю

int var = 0;

затем на main_header.hpp я добавляю

extern int var;

затем на главном cpp

int a = var;

он не показывает ошибку для var, только для myArray.

1 Ответ

0 голосов
/ 14 мая 2018

Измените main_header.hpp на:

extern myClass myArray[];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...