Константа из класса, для case. Помогите с синтаксисом.
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.141] |
|
|
Константа из класса, для case. Помогите с синтаксисом.
|
Сообщ.
#1
,
|
|
|
|
Здравствуйте!
Столкнулся тут с проблемкой. У меня есть класс, а в нём перечисление. ![]() ![]() class SomeClass { public: SomeClass() { type = const0; } enum { const0, const1, const2 } type; }; И в одном месте, мне нужно получить доступ к этим константам из вне. Вот например так: ![]() ![]() SomeClass* sc = new Someclass(); ... if( SomeClass::const1 == sc->type ) ... Это работает. Но вот в многовариантном выборе возникают проблемы. ![]() ![]() switch( sc->type ) { // в следующей строке синтаксис не проходит case SomeClass::const0: ... break; case SomeClass::const1: ... break; case SomeClass::const2: ... break; } Компилятор тут же начинает ругаться Цитата error: case label ` const0' not within a switch statement И примерно так же на остальное. Пробовал брать выражение SomeClass::const0 в круглые скобочки - не помогло. Использую MinGW. Как написать по другому, не знаю. Подскажите пожалуйста. |
|
Сообщ.
#2
,
|
|
|
|
В VC норм. Единственно, что смутило - SomeClass* sc = new Someclass();
Это нормально для MinGW? |
|
Сообщ.
#3
,
|
|
|
|
Ну такая запись у меня работала всегда нормально.
А вот на строку case SomeClass::const0: ругаеться. Попробую ещё поэксперементировать. Возможно что ошибка где-то в другом месте моего проекта... Добавлено Да, похоже что ошибка в другом месте. Ща протестил в отдельном коде, и всё скушалось. Но не понятно, почему тогда ругаеться, сначало на эту строчку... |
|
Сообщ.
#4
,
|
|
|
|
Может при объявлении перечисления нужно задать начальный индекс:
![]() ![]() enum { const0 = 0, const1, const2 } type; хотя компилятор их "автоиатом" с нуля индексирует. |
|
Сообщ.
#5
,
|
|
|
|
Значение инициализации, нельзя задавать в описании класса.
Я сделал это в конструкторе, как привёл выше. Да и не в этом дело. Ошибку нашол. В очередной раз тупанул. Не весть откуда взялась фигурная скобочка, которая мне весь код испаганила. |