Avatar ·

Cómo inicializar miembros estáticos privados de una clase en un archivo de header?

¡Hola! Empecé a estudiar C++ y me encontré con un problema al trabajar con miembros estáticos de una clase. Tengo una clase simple que almacena la cantidad de objetos creados: ```cpp // MyClass.h class MyClass { private: static int counter; // declaración del miembro estático public: MyClass() { ++counter; } int getCounter() const { return counter; } }; ``` Intento inicializar `counter` directamente en el archivo de header, por ejemplo, así: ```cpp static int counter = 0; // ¡error! ``` Pero el compilador da un error: "non-const static data member must be initialized out of line". Si hago el miembro público y lo inicializo en un archivo .cpp, funciona: ```cpp // MyClass.cpp #include "MyClass.h" int MyClass::counter = 0; ``` Pero me resulta incómodo tener que crear un archivo .cpp separado para cosas tan simples. He oído que en C++17 aparecieron algunas nuevas funcionalidades. ¿Cómo inicializar correctamente miembros estáticos privados en un archivo header para que el código sea compacto?