防止重新定义构造函数定义的方法
Way To Prevent To Redefine Constructor Definitions
我正在编写一个自定义的异常类,在std::exception
类的基础上有一些额外的功能。我向 Exception 类中添加了一个自定义构造函数Exception(std::string details) : details(details) {}
。
后来,当我使用类FileNotAccessibleException
扩展 Exception
类并抛出它时,我收到一个编译错误,指出no matching function for call to ‘FileNotAccessibleException::FileNotAccessibleException(std::basic_string<char>)’
当我将方法FileNotAccessibleException(std::string details) : Exception(details) {}
添加到我的类时,它确实工作正常。
有没有办法使构造函数工作,而不必为所有类重新定义构造函数?
您可以使用 using
声明继承基类的构造函数:
class FileNotAccessibleException : public Exception
{
public:
using Exception::Exception;
...
};
有关继承构造函数的更多信息,请参阅 Bjarne Stroustrup 的 C++11 FAQ。
注意:这不适用于 C++11 之前的实现,并且是添加到流行编译器(如 G++ 和 CLANG)中的最后 C++11 语言功能之一。
相关文章:
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 当类成员参数具有相同的名称时,如何定义构造函数?
- C++定义构造函数使对象成为非 POD
- 请描述一下在 c++ 中在此类中定义构造函数的方式?
- 不为 emplace() 定义构造函数的解决方法
- 已定义构造函数的构造函数无法识别
- 在自定义构造函数中的堆上创建指针
- c++ 17 中结构自动定义构造函数的规则是什么?
- Python 错误:在 SWIG 生成的C++模板化代码模块中没有定义构造函数
- unique_ptr看不到派生类的自定义构造函数
- 两种类型的定义构造函数有什么区别?第一个使用":",第二个用大括号(如函数)定义它
- 为什么一个非平凡的成员需要为同一类中的匿名联合定义构造函数
- 为其成员根据模板基类存在的类定义构造函数
- 如何在派生类上具有默认行为,而不是重新定义构造函数
- 在结构中定义构造函数
- 将从基类继承的构造函数与自定义构造函数混合使用
- 如何在模板类外部定义构造函数
- C 需要使用自定义构造函数的帮助
- 可以联合包含具有用户定义构造函数的类的对象
- 具有用户定义构造函数的非聚合类的值初始化