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?