防止重新定义构造函数定义的方法

时间:2013-10-05 18:42:44

标签: c++ exception methods constructor

我正在编写一个自定义的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}时我的班级,它确实工作正常。

有没有办法让构造函数工作,而不必重新定义所有类的构造函数?

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。