所以你有 type 的 objectx
和 type 的X
object y Y
。 X
并且Y
是相关的,并且要求y
在其相关之前被销毁x
。
换句话说,像这样:
struct X { void do_something(); }
struct Y
{
Y(X&x) : my_x(&x) {}
void do_something() { my_x->do_something(); }
private:
X * my_x;
};
作为一名防御性程序员,您希望在my_x
上面使用智能指针。但是,据我所知,没有合适的指针。这个指针需要知道它不拥有它的原始指针,并且它不应该比它指向的对象寿命长。
我认为在大多数情况下,这在编译时是不可能显示的。但是,在某些情况下,可以证明它y
不恰当地超过了它的x
.
在这种情况下,你能想出任何方法来创建编译时错误,或者我们是否坚持运行时断言?