是否可以将引用传递给其构造函数的成员初始化列表中的对象(类型)Container
,以便初始化Container
的成员,如下所示:
(ideone上的代码)。
#include <cstdlib>
#include <iostream>
struct Container;
struct Member
{
Member( Container& container ) : m_container( container )
{
}
Container& m_container;
};
struct Container
{
Container() : m_member( *this )
{
}
Member m_member;
};
int main()
{
Container c;
return EXIT_SUCCESS;
}
代码编译但我不确定它的标准。
答案 0 :(得分:5)
那没关系;初始化成员引用以引用作为参数传递的对象。
但是,由于Container
仍在构建中,因此您不能在该构造函数中访问它;你可以用引用做的唯一事情是初始化另一个引用。
您还必须确保在销毁容器后不使用该引用。在这个例子中,它很好 - m_member
及其包含的引用随容器一起被销毁。
答案 1 :(得分:4)
没关系,但是注意container
的构造函数中的Member
还没有完全构造,所以除了存储引用之外你不能做任何事情