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, ваш код скомпилируется.

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

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

Другие вопросы по тегам