Class A
{
A(B& b) : mb(b)
{
// I will not access anything from B here
}
B& mb;
};
Class B
{
B(): a(*this)
{}
A a;
}
我多次遇到这样的情况,包含的对象需要使用容器功能。在包含的对象中引用容器对象似乎是执行此操作的最佳方法。当然,我可以用一个指针来做到这一点,这样我就可以有一个 setter 我更愿意使用引用来执行此操作,这意味着我需要在构造函数中对其进行初始化,因此出现了问题。
最佳答案
因为您只是初始化对 B 的引用,所以这应该没问题——当 B 的构造函数运行时,内存位置已经设置好了。
请记住,您不能从 A 的构造函数中安全地调用 B 中的任何方法,因为 B 尚未完成构造。
关于c++ - 在下面的例子中在构造函数中传递 *this 是否可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2484389/