我正在编写一个自定义的Exception类,在std::exception
之上有一些额外的功能。我在我的Exception类中添加了一个自定义构造函数Exception(std::string details) : details(details) {}
。
稍后,当我使用类Exception
扩展FileNotAccessibleException
类并抛出它时,我收到编译错误no matching function for call to ‘FileNotAccessibleException::FileNotAccessibleException(std::basic_string<char>)’
当我添加方法{{1}时我的班级,它确实工作正常。
有没有办法让构造函数工作,而不必重新定义所有类的构造函数?
答案 0 :(得分:7)
您可以使用using
声明继承基类的构造函数:
class FileNotAccessibleException : public Exception
{
public:
using Exception::Exception;
...
};
在Bjarne Stroustrup's C++11 FAQ上查看有关继承构造函数的更多信息。
注意:这不适用于pre-C ++ 11实现,并且是最新的C ++ 11语言功能之一,可以添加到流行的编译器,如G ++和CLANG。