Я хочу иметь int
, связанный с моим классом, который устанавливается, когда пользователь этого класса создает экземпляр.Невозможно инициализировать private const member
class MyClass {
public:
MyClass(int x);
private:
const int x;
};
Чтобы инициализировать эту константу, я стараюсь использовать застройщик (Java стиль):
MyClass::MyClass(int x) {
this->x = x;
}
Однако мой компилятор не совсем, как это так, и я получаю следующее:
const.cxx: In constructor ‘MyClass::MyClass(int)’:
const.cxx:3:1: error: uninitialized const member in ‘const int’ [-fpermissive]
MyClass::MyClass(int x) {
^
In file included from const.cxx:1:0:
const.h:8:13: note: ‘const int MyClass::x’ should be initialized
const int x;
^
const.cxx:4:11: error: assignment of read-only member ‘MyClass::x’
this->x = x;
^
Что такое C++ способ инициализации созданной константы на основе конструктора a la Java?
EDIT: Я видел вопрос, обозначенный как дубликат; этот поток не упомянул, что вы можете использовать параметры конструктора в списке инициализаторов, поскольку он использует только числовые литералы во всех примерах.
Используйте символ [Инициализатор список] (http://en.cppreference.com/w/cpp/language/initializer_list): 'MyClass :: MyClass (int x): x (x) {}' – Biffen
И BTW, используйте это для не-const-членов тоже ... –
Используйте _initialization_, а не назначение. – emlai