8
Ví dụ:Làm thế nào để kế thừa từ std :: runtime_error?
#include <stdexcept>
class A { };
class err : public A, public std::runtime_error("") { };
int main() {
err x;
return 0;
}
Với ("")
sau runtime_error
tôi nhận được:
error: expected '{' before '(' token
error: expected unqualified-id before string constant
error: expected ')' before string constant
khác (không ("")
) tôi nhận được
In constructor 'err::err()':
error: no matching function for call to 'std::runtime_error::runtime_error()'
gì đang xảy ra vậy?
(Bạn có thể kiểm tra nó ở đây: http://www.compileonline.com/compile_cpp_online.php)
Tôi đã thử nó trên http://www.compileonline.com/compile_cpp_online.php và đề xuất của bạn cung cấp cho tôi 'không có hàm phù hợp để gọi tới 'std :: runtime_error :: runtime_error()'' – mchen
@MiloChen: bạn chắc chắn bạn đã sao chép mọi thứ chính xác chưa? Tôi đã thêm một liên kết đến một ví dụ trực tiếp cho thấy mã biên dịch chính xác –
Ồ, tôi hiểu, nó sẽ không biên dịch nếu tôi bỏ lỡ hàm tạo 'err(): std :: runtime_error (" ") {}'. Nó không phải là tôi * muốn * để vượt qua một chuỗi rỗng - Tôi * buộc *. – mchen