我有一些类 Foo 和 Logger:
class Logger{/* something goes here */};
class Foo{
Foo(Logger& logger);
Logger& logger;
}
Foo::Foo(Logger& logger) : logger(logger)
{}
现在我想创建一个 Foo 类的对象数组,其中所有引用Foo::logger
都应该指向同一个Logger
对象。我尝试了类似的东西(我需要堆栈和堆分配):
Logger log (/* parameters */);
Foo objects [3] (log); // On stack
Foo* pObjects = new Foo [3] (log); // On heap
问题是两个版本都试图调用Foo()
不存在的默认构造函数。此外,据我了解,无法更改引用的引用变量。因此,对默认构造函数的临时调用和稍后在循环中的初始化也无济于事。
那么:正确的方法是什么?我需要使用指向Logger
对象的指针吗?