gpt4 book ai didi

c++ - 异常继承

转载 作者:行者123 更新时间:2023-11-28 03:19:56 24 4
gpt4 key购买 nike

是否可以在 C++ 的异常类中包含多个元素,我可以将它们与异常相关联,以便在我抛出它时,用户可以收集到有关异常的更多信息,而不仅仅是一条错误消息?我有以下类(class)

#include <list>
using namespace std;

class myex : public out_of_range {
private:
list<int> *li;
const char* str = "";
public:
//myex(const char* err): out_of_range(err) {}
myex(li<int> *l,const char* s) : li(l),str(s) {}

const char* what(){
return str;
}
};

当我使用 myex 时

throw myexception<int>(0,cont,"Invalid dereferencing: The iterator index is out of range.");, 

我得到一个错误

error: no matching function for call to ‘std::out_of_range::out_of_range()’.
Any help is appreciated.`.

当我取消对注释行的注释并删除其他构造函数时,它就可以正常工作了。

最佳答案

您的用户定义异常的构造函数试图调用超出范围的类的默认构造函数... Except it doesn't exist !

关于注释的构造函数:

myex(const char* err): out_of_range(err) {}
//^^^^^^^^^^^^^^^^^ this calls the constructor of
// out_of_range with the parameter err.

为了修复当前的构造函数,您应该添加对 out_of_range 构造函数的显式调用(它采用 const string&):

myex(li<int> *l,const char* s) : out_of_range(s), li(l),str(s) {}

关于c++ - 异常继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15738238/

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