2012-06-08 4 views
0

Я пытаюсь сделать код окна с NeHe.gamedev.net и превратить его в класс, чтобы я мог использовать его более легко, и я столкнулся с проблемой. Метод WndProc должен быть объявлен как статический, который я прочитал, что, конечно, означает, что используемые в нем переменные должны быть статическими. Но когда я объявляю их, как это в заголовке файлаСтатические члены класса в C++

private: 

static bool keys[256];     //for key events 
static bool active; 
static bool fullscreen; 

Я получаю сообщение об ошибке сказав, что они незаявленных внешние. Я довольно новичок в C++, так что я пропал без вести? Благодаря!

+0

Ответил на мой вопрос буквально через несколько секунд. Но на всякий случай я приведу цитату из сайта, на котором я нашел ответ «Объявление статического члена данных в списке членов класса не является определением. Вы должны определить статический член вне объявления класса, в области пространства имен «. В основном они должны быть определены в файле .cpp, сказав тип classname :: membername = something. – Pat

ответ

2

Статические значения также должны быть объявлены в файле реализации. В файле .cpp вы должны иметь что-то вроде:

bool MyClass::keys[256]; 
bool MyClass::active; 
bool MyClass::fullscreen; 

Проблема в том, не объявляется где-то в файле реализации, компилятор не имеет хорошее место для размещения хранилища для статических переменных.

+0

Удивительно, что подтверждает то, что я читаю. Я бы поднял вас, но я не могу :(Я нажал, что это было полезно, хотя. – Pat

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