0

是否可以在 c++ 中的异常类中有多个元素,我可以将它们与异常关联,以便当我抛出它时,用户可以收集有关异常的更多信息而不仅仅是错误消息?我有以下课程

#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;
    }       
};

当我使用

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.`.

当我取消注释注释行并删除另一个构造函数时,它可以正常工作。

4

1 回答 1

2

您的用户定义异常的构造函数尝试调用类 out_of_range 的默认构造函数...除非它不存在

关于评论的构造函数:

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) {}
于 2013-04-01T06:16:06.573 回答