[英]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("") { }
// ^^^^^^^^^^^^^^^^^^^^^^^^
};
這是一個顯示代碼編譯的實例 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.