que tienen alguna clase Foo y Registrador:¿Cómo crear una matriz con un miembro de referencia en C++?
class Logger{/* something goes here */};
class Foo{
Foo(Logger& logger);
Logger& logger;
}
Foo::Foo(Logger& logger) : logger(logger)
{}
Ahora quiero crear una matriz de objetos de la clase Foo, donde todas las referencias Foo::logger
debe apuntar a la misma Logger
objeto. He intentado algo así como (necesito tanto pila y asignación del montón):
Logger log (/* parameters */);
Foo objects [3] (log); // On stack
Foo* pObjects = new Foo [3] (log); // On heap
El problema es que ambas versiones tratan de llamar al constructor por defecto Foo()
que no está presente. Además, como entiendo, no es posible cambiar la variable referenciada de una referencia. Por lo tanto, una llamada temporal al constructor predeterminado y una posterior integración en un bucle tampoco ayudan.
Entonces: ¿Cuál es la forma correcta de hacerlo? ¿Debo usar punteros al objeto Logger
?
Para estar seguro de que lo entiendo: ¿Quiere decir algún miembro estático para todos los objetos? ¿Cómo inicializarlo entonces? ¿O un objeto separado/variable global/...? –
Se refiere a una clase singleton a la que se puede acceder desde cualquier lugar de su código. Esta es la forma común para los madereros. – giorashc