Перечисление в заголовочных файлах - PullRequest
2 голосов
/ 10 февраля 2012

У меня есть enum, объявленный в заголовочном файле с именем "sm.h"

enum GameStates
{
  STATE_NULL = 0,
  STATE_INTRO,
  STATE_TITLE,
  STATE_MAIN,
  STATE_EXIT
};

Все, что он делает, это перечисляет возможные состояния игры

Однако в следующей строке "base"cpp ":

stateID = STATE_INTRO;

Компилятор говорит, что" STATE_INTRO не был объявлен в этой области ".Я понятия не имею, что я делаю не так.Я знаю, что правильно включил заголовочный файл и могу перейти к его замедлению из .cpp файла.Так почему я получаю эту ошибку.

stateID = STATE_INTRO;

Используется в:

bool baseFunctions::load_rc()
{
 stateID = STATE_INTRO;

 currentState = new Intro();

 return true;
}

, которая определяет функцию класса в заголовочном файле.

Глобальных нетконфликты, потому что это единственное перечисление во всей программе

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

По вашей ссылке на ваши файлы у вас есть следующее: sm.h и base.h

#ifndef BASE_H_INCLUDED
#define BASE_H_INCLUDED

Измените значение в sm.h на что-то вроде

#ifndef SM_H_INCLUDED
#define SM_H_INCLUDED

и я ожидаю, что вы будете в порядке.

Как таковой, base.cpp загружает base.h, затем, когда он достигает sm.h, #ifndef имеет значение false, поэтому он исключает все в sm.h.

1 голос
/ 10 февраля 2012

Скорее всего, вы не включили "sm.h" в base.cpp

...