2015-08-13 3 views
0

я получил ошибку при компиляции моей программы:Как объявить указатель массива объектов? (LNK2001 неразрешенный внешний символ "общественность: статический класс бомба * * Bomb :: бомба" (бомбы @ Bomb @@ 2PAPAV1 @ A)?)

LNK2001 нерешенных внешних символ "общественность: статический Bomb класса * * Bomb :: бомба"

Я знаю, что я должен определить static Bomb *bombs[14] в моих .cpp, но я не знаю, как (бомбы @ Bomb @@ 2PAPAV1 @ A?) ,

Мой .h файл:

class Bomb { 
public: 
static Bomb *bombs[14]; 
static int num_bombs; 
... 

Что мне нужно сделать, чтобы добавить в свой файл .cpp?

+0

Является ли 'бомбы 'предполагаемым 2-мерным массивом? – bpgeck

+0

@bpgeck nope. Я хочу только указатель массива объектов Bomb – user2321517

+1

Just 'Bomb * Bomb :: bomb [14];' в ваш файл cpp. – twentylemon

ответ

1

недостающее линия:

Bomb *Bomb::bombs[14]; 

Вы должны квалифицировать его с именем класса, так как это часть декларации. Кроме того, вам не нужна часть static в определении.

0

Чтобы сделать код компиляции просто добавить Bomb *(Bomb::bombs[size]); в код (Обратите внимание на то Bomb:: так bombs является членом Bomb класса).

Однако я не думаю, что это хороший дизайн, и я считаю, что у вас есть логическая ошибка здесь. Когда вы пытаетесь создать экземпляр 1 Bomb, он будет иметь массив указателей на другие Bomb s, каждый из которых будет содержать массивы указателей на другие Bomb и так далее.

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

+1

Вам не хватает целых кусков знаний, чтобы делать это суждение. Нет ничего плохого в массиве указателей на объект. – Blindy

Смежные вопросы