如何从std::runtime_error继承
How to inherit from std::runtime_error?
例如:
#include <stdexcept>
class A { };
class err : public A, public std::runtime_error("") { };
int main() {
err x;
return 0;
}
在runtime_error
之后使用("")
,我得到:
error: expected '{' before '(' token
error: expected unqualified-id before string constant
error: expected ')' before string constant
其他(没有("")
(我得到
In constructor 'err::err()':
error: no matching function for call to 'std::runtime_error::runtime_error()'
怎么了?
(您可以在此处进行测试:http://www.compileonline.com/compile_cpp_online.php)
这是正确的语法:
class err : public A, public std::runtime_error
而不是:
class err : public A, public std::runtime_error("")
正如你在上面所做的。如果你想把一个空字符串传递给std::runtime_error
的构造函数,可以这样做:
class err : public A, public std::runtime_error
{
public:
err() : std::runtime_error("") { }
// ^^^^^^^^^^^^^^^^^^^^^^^^
};
下面是一个演示代码编译的实际示例。
我只想补充一点,err
类可以接受一条字符串消息,并简单地将其转发给std::runtime_error
,或者默认情况下是一个空字符串,如下所示:
#pragma once
#include <stdexcept>
class err : public std::runtime_error
{
public:
err(const std::string& what = "") : std::runtime_error(what) {}
};
相关文章:
- "error: no matching function for call to"构造函数错误
- 继承函数的重载解析
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 继承期间显示未知行为的子类
- 头文件-继承c++
- 为什么在保护模式下继承升级不起作用
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- 通过继承类使用来自不同命名空间的运算符
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 混合组合和继承的C++问题
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 从类继承时,继承的类是否会通过父类重新定义继承的变量
- 公共与私人继承
- 如何创建从同一类继承的不同对象的向量
- 如何修复从基类继承两次时"error: no matching function for call to"
- 从QObject继承后的Qt "signal undefined reference error"
- "error: expected class-name before '{' token"尝试继承
- 从std::exception继承的error类编译错误
- C++:继承模板类时"error: expected class-name before ‘{’ token"