C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.cpp(7) : error C2258: illegal pure syntax, must be '= 0'
C:\Program Files\Microsoft Visual Studio\MyProjects\1\1.cpp(7) : error C2252: 'i' : pure specifier can only be specified for functions
Re[2]: ругается на static const int i = 1; в теле класса, по
Здравствуйте, Ruweb, Вы писали:
R>vc6 выдаёт ошибку:
А он ещё не знает, что так можно
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: ругается на static const int i = 1; в теле класса, по
Здравствуйте, Аноним, Вы писали:
А>а почему этот пример не компилируется:
Какой компилятор?
Такой синтаксис разрешили не так давно, так что может твой компилятор слишком старый.
Раньше использовали такой хак:
class base
{
public:
enum { i = 16 };
};
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: ругается на static const int i = 1; в теле класса, по
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Аноним, Вы писали:
А>>а почему этот пример не компилируется: E>Какой компилятор?
E>Такой синтаксис разрешили не так давно, так что может твой компилятор слишком старый.
E>Раньше использовали такой хак: E>
class base
E>{
E>public:
E> enum { i = 16 };
E>};
Почему хак? это наилучшее решение
Нужно разобрать угил.
Re[5]: ругается на static const int i = 1; в теле класса, по
Здравствуйте, NikeByNike, Вы писали:
NBN>Почему хак? это наилучшее решение
Потому что мысль выражена непрямо.
Кроме того тип константы задаётся не совсем тот, какой надо.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: ругается на static const int i = 1; в теле класса, по
Здравствуйте, _nn_, Вы писали:
__>Вы выберите одно из двух.
__>Но не то что вы написали.
Он правильно написал.
9.4.2 п.4
If a static data member is of const integral or const enumeration type, its declaration in the class definition can specify a constant-initializer which shall be an integral constant expression (5.19). In that case, the member can appear in integral constant expressions. The member shall still be defined in a namespace
scope if it is used in the program and the namespace scope definition shall not contain an initializer.
Re[3]: ругается на static const int i = 1; в теле класса, по
Здравствуйте, shank, Вы писали:
S>Здравствуйте, _nn_, Вы писали:
__>>Вы выберите одно из двух.
__>>Но не то что вы написали. S>Он правильно написал. S>
S>9.4.2 п.4
S>If a static data member is of const integral or const enumeration type, its declaration in the class definition can specify a constant-initializer which shall be an integral constant expression (5.19). In that case, the member can appear in integral constant expressions. The member shall still be defined in a namespace
S>scope if it is used in the program and the namespace scope definition shall not contain an initializer.
Был не прав
Если инициализировать в классе, зачем тогда еще раз писать определение.
__>Если инициализировать в классе, зачем тогда еще раз писать определение.
Как раз таки получается наоборот : то что вы пишите "внутри" класса и есть определение( класс сам по себе является определением ), а вне класса необходимо описать саму статическую переменную-член класса. Насколько я знаю, синтаксис, который не обязывал программиста определять статические переменные — члены класса был в старых компиляторах, но потом от этой возможности отказались. Хотя, имхо, к этому скоро вернутся (новое — хорошо забытое старое)