Переменная типа Enum в разных модулях

  • Автор темы Andrey97
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Andrey97

#1
C++ Builder 6.

В модуле 1 объявлена переменная:
C++:
enum {a, b, c} State;
В модуле 2 при попытке присвоить переменной значение
C++:
State=a;
выдается ошибка
[C++ Error] Unit1.cpp(107): E2451 Undefined symbol 'a'.
Почему то компилятор переменную "видит" но "не видит" строковую константу внутри объявленной переменной.
 

DarkKnight

Well-known member
01.08.2010
653
0
#2
C++ Builder 6.

В модуле 1 объявлена переменная:
enum {a, b, c} State;

В модуле 2 при попытке присвоить переменной значение
State=a;
выдается ошибка
[C++ Error] Unit1.cpp(107): E2451 Undefined symbol 'a'.
Почему то компилятор переменную "видит" но "не видит" строковую константу внутри объявленной переменной.
Я точно не помню,но помойму перечисляемые константы доступны только в определнном пространстве имен или в текущем модуле

так что даже ни какой extern не поможет, из чего следует, что смело перемещай его в заголовочный файл отдельный и подгружай #include ом
 

DarkKnight

Well-known member
01.08.2010
653
0
#3
А лучше при описание используй пространство имен, что бы не напутать с объявленным идентификаторамы переменных и констант

C++:
//Заголовочный файл
namespace MyStatus
{
enum {a, b, c} State;

}
//----------------------------------

#include "Наш заголовочный файл"

{
int State;
State = MyStatus::c;


}
 
A

Andrey97

#4
А лучше при описание используй пространство имен, что бы не напутать с объявленным идентификаторамы переменных и констант
Обошлось без пространства имен.
Вообще переменные enum входят в состав структуры. Я в заголовочном файле объявил теги enum, затем объявил тип структуры с содержанием этих типов enum. При подключении такого файла другой модуль не ругается на имена значений enum.
Все равно всем спасибо!
 
Статус
Закрыто для дальнейших ответов.