作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一些类 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
对象的指针?
最佳答案
您不能使用非默认构造函数初始化对象数组。但是,您可以使用如图所示的 vector here (看第一个回复)
对于堆,您可以执行以下操作:
Foo* pObjects[3];
for (int i = 0; i < 3; ++i) {
pObjects[i] = new Foo(log);
}
关于c++ - 如何在 C++ 中创建带有引用成员的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012280/
我是一名优秀的程序员,十分优秀!