簡體   English   中英

如何從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("") { }
//        ^^^^^^^^^^^^^^^^^^^^^^^^
};

這是一個顯示代碼編譯的實例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM