我对一个成语很好奇,或者说类的技术来保持对自身实例的成员引用,如下所示
class A
{
public:
A & instance;
public:
A():instance(*this){}
};
它在启用 0x 的 VC11 中运行良好,但我不确定它是否适用于其他编译器,因为this
在实例化期间可能不一定会引用相应的“this-will-being”对象。有人可以通过在这里演示所有分配来指定初始化列表的语义吗?是标准的还是不标准的?
我对一个成语很好奇,或者说类的技术来保持对自身实例的成员引用,如下所示
class A
{
public:
A & instance;
public:
A():instance(*this){}
};
它在启用 0x 的 VC11 中运行良好,但我不确定它是否适用于其他编译器,因为this
在实例化期间可能不一定会引用相应的“this-will-being”对象。有人可以通过在这里演示所有分配来指定初始化列表的语义吗?是标准的还是不标准的?
如果你想要一个指向自己的共享指针,你可以使用 Boost 的enable_shared_from_this。我不知道是否有一个简单的标准方法来完成同样的事情,但它只是一个模板,所以你可以想象在没有 Boost 的情况下做同样的事情。