кодовая панель — ISO C ++ запрещает инициализацию приватного const unsigned long?

Я использую codepad.org

class a {
private:
const unsigned long b = 100;
};

Строка 3: ошибка: ISO C ++ запрещает инициализацию члена ‘b’

компиляция прервана из-за ошибок -Wfatal.

Извините, если я что-то упустил очевидное, но что может быть не так?

0

Решение

До C ++ 11 вы можете только инициализировать статический элемент данных const в определении класса:

static const unsigned long b = 100;

Обычно это то, что вы хотите. Не имеет смысла иметь все экземпляры a иметь это постоянное значение дублируется среди них.

Если вы включите поддержку C ++ 11, ваш код скомпилируется.

3

Другие решения

Инициализация в классе разрешена только для static const целочисленные типы в C ++ 03, и ваша переменная не static,

Либо сделать это static (в этом случае вы должны заметить, что вы также должны определить его в этом случае), или использовать компилятор C ++ 11.

1