【问题标题】:c++ not let main return [closed]c ++不让main返回[关闭]
【发布时间】:2013-12-13 11:04:43
【问题描述】:

我有以下代码:

int main()
{
    Client *c = new Client();
    ExitOnlyWhenClientException();
    return 0;
}

所以我不希望 main 仅在客户端抛出异常时返回。我知道我可以使用条件变量,它在客户端的析构函数中发出信号并在主块中等待。

但是还有其他方法吗?

我找到了这个链接How would you implement a basic event-loop?

我的问题与上面的链接相比有点不同,因为它应该知道客户端崩溃了。

编辑 1

我说崩溃了,我的意思是异常。

【问题讨论】:

  • Client 似乎是一个类。一个类不会崩溃。程序崩溃。因此,如果Client 类中的代码导致崩溃,整个程序就会崩溃。除非你在谈论例外,这是另一回事。
  • 哪个平台?事件循环的概念可能出现在任何基础教程的第一章中。 @SirDarius:很明显他的意思是“当客户端导致崩溃时”。
  • 为什么不在客户端有一个 run 方法,调用它然后你必须等到它完成,要么通过崩溃,要么干净
  • @SirDarius:是的,我的意思是客户端抛出异常。

标签: c++ destructor


【解决方案1】:

让我们用另一个类类型替换Client

int main()
{
    std::string *s = new std::string();
    ExitOnlyWhenStringException();
    return 0;
}

现在,如果您尝试访问越界元素,std::string::at() 可能会引发异常。事实上,由于*s 是空的,任何索引都会越界。但是,您没有调用 s->at(8) 或任何其他方法。因此,唯一可能的例外是来自newstd::bad_alloc。你不需要处理它(任何合理的实现都允许你动态地创建至少一个对象)。

【讨论】:

  • 感谢您的回答。抱歉,我的问题不是很清楚。
猜你喜欢
  • 2013-08-07
  • 1970-01-01
  • 2014-12-11
  • 2021-04-02
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
相关资源
最近更新 更多