В PHP и С# константы могут быть инициализированы по мере их объявления:
class Calendar3
{
const int value1 = 12;
const double value2 = 0.001;
}
У меня есть следующее объявление С++ функтора, который используется с другим классом для сравнения двух математических векторов:
struct equal_vec
{
bool operator() (const Vector3D& a, const Vector3D& b) const
{
Vector3D dist = b - a;
return ( dist.length2() <= tolerance );
}
static const float tolerance = 0.001;
};
Этот код скомпилирован без проблем с g++. Теперь в режиме С++ 0x (-std = С++ 0x) компилятор g++ выводит сообщение об ошибке:
error: 'constexpr, необходимый для инициализации класса статических данных в классе, для нецелого типа
Я знаю, что могу определить и инициализировать этого члена static const
вне определения класса. Кроме того, нестатический элемент данных констант может быть инициализирован в списке инициализаторов конструктора.
Но есть ли способ инициализировать константу в объявлении класса так же, как это возможно в PHP или С#?
Update
Я использовал ключевое слово static
только потому, что было возможно инициализировать такие константы в объявлении класса в g++. Мне просто нужен способ инициализации константы в объявлении класса независимо от того, объявлен ли он как static
или нет.