Impossible d’initialiser un membre privé privé

Je veux avoir un int associé à ma classe qui est défini lorsque l’utilisateur de cette classe l’instancie.

 class MyClass { public: MyClass(int x); private: const int x; }; 

Pour initialiser cette constante, j’essaie d’utiliser le constructeur (style Java):

 MyClass::MyClass(int x) { this->x = x; } 

Cependant, mon compilateur ne l’aime pas vraiment de cette façon, et j’obtiens ce qui suit:

 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; ^ 

Quelle est la méthode C ++ pour initialiser une constante instanciée basée sur le constructeur à la Java?

EDIT: J’ai vu la question marquée comme duplicata; ce fil n’a pas mentionné que vous pourriez utiliser les parameters du constructeur dans la liste des initialiseurs, car il utilise uniquement des littéraux numériques dans tous les exemples.

Vous pouvez utiliser ce que l’on appelle une liste d’initialiseur dans la signature de fonction du constructeur:

 MyClass::MyClass(int x) : x(x) { }