Avatar ·

Comment initialiser les membres statiques privés d'une classe dans un fichier d'en-tête ?

Bonjour ! J'ai commencé à apprendre le C++ et j'ai rencontré un problème avec les membres statiques d'une classe. J'ai une classe simple qui stocke le nombre d'objets créés : ```cpp // MyClass.h class MyClass { private: static int counter; // déclaration du membre statique public: MyClass() { ++counter; } int getCounter() const { return counter; } }; ``` J'essaie d'initialiser `counter` directement dans le fichier d'en-tête, par exemple : ```cpp static int counter = 0; // erreur ! ``` Mais le compilateur génère une erreur : "non-const static data member must be initialized out of line". Si je rends le membre public et que je l'initialise dans un fichier .cpp, tout fonctionne : ```cpp // MyClass.cpp #include "MyClass.h" int MyClass::counter = 0; ``` Mais je trouve gênant de devoir créer un fichier .cpp séparé pour des choses aussi simples. J'ai entendu dire qu'avec C++17, de nouvelles fonctionnalités sont apparues. Comment initialiser correctement les membres statiques privés dans un fichier header pour que le code reste compact ?