El título básicamente lo dice todo, me pregunto cuándo se inicializarán los miembros estáticos de una clase C++ y cuándo saldrán del alcance.Alcance variable de miembro estático de C++
Necesito esto para el siguiente problema. Tengo muchos objetos de una clase Foo y cada objeto necesita acceso a un recurso, encapsulado por otra clase de barra. La sincronización no es un problema, por lo que quiero que todos los objetos compartan la misma instancia de Bar.
Estoy usando un puntero administrado simple para el recuento de referencias.
¿Puedo hacer lo siguiente:
class Foo {
private:
static managed_pointer<Bar> staticBar;
public:
Foo() {
if(!staticBar)
staticBar = new Bar;
}
/*
* use staticBar in various non-static member functions
*/
};
managed_pointer<Bar> Foo::staticBar = NULL;
la managed_pointer staticBar debe eliminar el objeto barra tan pronto como se sale del ámbito - pero cuando sucede esto? cuando la última instancia de Foo es destruida? en la salida de la aplicación?
Gracias por su consejo!
Vaya, gracias por corregir el error tipográfico. – Pontomedon
La última instancia de Foo se destruye cuando simplemente elimina la última instancia o cuando existe su programa. Un miembro estático de una clase existirá sin importar cuántas instancias de la clase haya. – Gabi