- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以你有 X
类型的对象 x
和 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
。
在这种情况下或者我们是否坚持使用运行时断言,您能想出任何方法来创建编译时错误吗?
最佳答案
这还不能解决您的问题吗?它确保相关的 Y
总是在 X
之前销毁。
struct X;
struct Y
{
Y(X& x) : my_x(&x) {}
void do_something() { my_x->do_something(); }
private:
X* my_x;
};
struct X
{
X() : owned_y_(this) { }
void do_something();
private:
Y owned_y_;
};
关于c++ - 编译时生命周期检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16323154/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!