2013-07-24 97 views
-8

在C++中,我可以从A()跳转到B()而不需要调用堆栈中的A()吗?这种情况下有没有类似goto?我的情况是我应该在它的一个函数结束时销毁一个对象。我可以用delete this;去掉。但在我的代码中,在特定的条件下,构造函数本身必须调用一个函数,然后调用像引爆一样的函数。在C++中,有没有办法从一个函数跳转到另一个

解决我的问题,我可以问我可以中止创建一个对象。但是我发现从另一个函数跳到另一个函数避免了调用堆栈中的父函数迷人和有用。

+12

不,你不能用'goto'去一个不同的功能。 – chris

+9

这看起来非常错* –

+3

认为你可以使用setjmp和longjmp,但你不应该这样做。 –

回答

1

您可以“回到过去的时间”到之前使用过setjmplongjmp的地方,但没有什么可跳转到代码中的随机新位置(除了各种系统相关的东西,例如使用内联汇编器或其他一些 - 这仍然很难做出非常通用的,因为你需要关心堆栈清理和其他事情)。

1

如果你有共同的功能,然后做一个(private)方法,并从需要该功能的所有方法调用它:

class timeBomb { 
public: 
    void detonate(int time){ 
    sleep(time); 
    blast(); 
    }; 
    timeBomb(); 

private: 
    void blast(){ 
    delete this; // Very dangerous! 
    } 
}; 
相关问题