c++ - "Override"构造函数并调用祖 parent 构造函数

标签 c++ templates inheritance constructor

我正在使用库中的一个类,我们将其称为 LibraryClass<BaseClass>哪里LibraryClass<>像这样继承它的模板:

template<class BaseClass>
class LibraryClass
:
    public BaseClass
{
...

这个类完全符合我的要求,但是构造函数中有一个错误。我正在尝试创建一个像这样的派生类:

template<class BaseClass>
class MyClass
:
    public LibraryClass<BaseClass>
{
...

然后添加一个新的构造函数。但是,在构造函数 MyClass() 中,我需要调用构造函数 BaseClass(),它不是直接父级。如上所述,我不想调用 LibraryClass(),因为它有一个错误。

我应该如何用一个新的构造函数创建这个新类?

最佳答案

我怀疑在一般情况下是否有符合标准的方法来绕过父构造函数(如果存在这样的事情,那么如何确保父子对象保持可用状态?)

IMO 修复该错误的最佳方法是更改​​ LibraryClass

如果您做不到这一点,您可以复制 LibraryClass 并修复拷贝中的错误。这有明显且可能非常显着的缺点。

另一种可能的替代方法是调用有问题的构造函数,然后修复 MyClass::MyClass 中的对象以解决该错误。此方法可能适合您的情况,也可能不适用于您的情况。

关于c++ - "Override"构造函数并调用祖 parent 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19952886/

相关文章:

C++ 函数采用整数,但示例显示文本?

c++ - 追踪水平面

c++ - 当 PortableServer::ServantLocator preinvoke() 返回 CORBA::OBJECT_NOT_EXIST() 时处理 SIGABRT

c++ - 数据访问器类型的常量正确性 - 更好的解决方案?

Java - 尝试理解码合

c++ - 使用 strtok 拆分字符串(嵌套)

c++ - 从类模板中提取模板模板参数和可变模板参数

templates - 模板中变量的默认值

c++ - 多重继承 C++,转换是如何工作的?

delphi - 检查对象是否继承自泛型类