mam jakąś klasę Foo i Rejestrator:Jak utworzyć tablicę z elementem odniesienia w C++?
class Logger{/* something goes here */};
class Foo{
Foo(Logger& logger);
Logger& logger;
}
Foo::Foo(Logger& logger) : logger(logger)
{}
Teraz chcę utworzyć tablicę obiektów klasy Foo, gdzie wszystkie odniesienia Foo::logger
powinien wskazywać na tym samym Logger
obiektu. Próbowałem coś podobnego (muszę zarówno stosu i sterty alokacji)
Logger log (/* parameters */);
Foo objects [3] (log); // On stack
Foo* pObjects = new Foo [3] (log); // On heap
Problemem jest to, że obie wersje próbować wywołać konstruktora domyślnego Foo()
który nie jest obecny. Ponadto, jak rozumiem, nie jest możliwa zmiana odniesionej zmiennej odniesienia. Zatem tymczasowe wywołanie domyślnego konstruktora i późniejsze zainicjowanie w pętli również nie pomaga.
A więc: Jaki jest właściwy sposób? Czy muszę używać wskaźników do obiektu Logger
?
Aby być pewnym, że Cię rozumiem: Masz na myśli jakiś statyczny element dla wszystkich obiektów? Jak to zainicjować? Lub oddzielny obiekt/zmienna globalna/...? –
On oznacza klasę singleton dostępną z każdego miejsca w kodzie. Jest to powszechny sposób dla rejestratorów. – giorashc