gpt4 book ai didi

c++ - C++ 中的松散抛出说明符错误

转载 作者:可可西里 更新时间:2023-11-01 15:39:20 25 4
gpt4 key购买 nike

以下代码生成“Looser throw specifier error”。你能帮我克服这个错误吗?

class base
{
virtual void abc() throw (exp1);
}

void base::abc() throw (exp1)
{
......
}

class sub : public base
{
void abc() throw(exp1, exp2);
}

void sub::abc() throw (exp1, exp2)
{
.....
}

最佳答案

问题的出现是因为子类必须在基类可以使用的地方可用,因此不能抛出基类中指定的异常类型以外的任何异常类型。

三种解决方案:

  1. 修改基类说明符以包含任何子类可能需要抛出的所有异常类型
  2. 修改每个子类以处理除基类中指定的异常类型之外的所有异常类型
  3. 删除异常说明符。

我建议删除它们;他们被广泛认为是一个坏主意,部分原因是因为这样的问题。正如 Matthieu 指出的那样,标准委员会同意,并且异常说明符将在下一版本的标准中弃用。

关于c++ - C++ 中的松散抛出说明符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5269957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com