ISO C++ запрещает инициализацию private const unsigned long?
Я использую codepad.org
class a {
private:
const unsigned long b = 100;
};
Строка 3: ошибка: ISO C++ запрещает инициализацию члена 'b'
компиляция прервана из-за ошибок -Wfatal.
Извините, если я что-то упустил очевидное, но что может быть не так?
2 ответа
Решение
До C++11 вы можете только инициализировать статический элемент данных const в определении класса:
static const unsigned long b = 100;
Обычно это то, что вы хотите. Не имеет смысла иметь все экземпляры a
иметь это постоянное значение дублируется среди них.
Если вы включите поддержку C++11, ваш код скомпилируется.
Инициализация в классе разрешена только для static
const
целочисленные типы в C++03, и ваша переменная не static
,
Либо сделать это static
(в этом случае вы должны заметить, что вы также должны определить его в этом случае), или использовать компилятор C++11.