2012-05-23 3 views
2

Я работаю над простым стрелком сверху вниз и хотел переместить мои корабли в отдельный класс ShipManager, где я могу управлять всеми ими из одного места. Однако, при запуске этого я получаю ошибку компоновщика на моем PlayerShip:Unresolved Externals

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

ShipManager.h выглядит следующим образом:

class Ship; 

class ShipManager 
{ 
public: 
static Ship* playerShip; 
}; 

У меня пока ничего не появилось в ShipManager .cpp. Что мне не хватает? Единственное место, где я использую этот код, - это мой игровой класс, где я фактически нахожу ShipManager :: playerShip, и у меня нет никаких ошибок.

Включает в себя «ShipManager.h» в моей игре game.cpp, поэтому он должен найти это правильно? У меня такое чувство, что я забываю что-то простое в этом классе.

+0

Понял, спасибо за быстрые ответы. –

+0

C++ SOFAQ отвечает на этот вопрос: http://loungecpp.wikidot.com/faq#toc4 –

ответ

6

Статические элементы должны быть определены где-то. Вы объявляете playerShip, но не определяете его. Вам нужно добавить где-то, обязательно и только один каст файл:

Ship* ShipManager::playerShip; 
+1

* «желательно на cpp-файле» * должен быть * «обязательно и только один файл cpp» *, определяя его в заголовке файл в конечном итоге сломает одно правило определения. –

+0

@Als: В самом деле, если никто не знает очень очень хорошо, что делает ... –

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