使用父类方法覆盖的多重继承
Multiple inheritence using parent class method override
假设我有以下类层次结构,其中我有一个接口,然后对该接口的进一步专业化,以保证更多功能:
class parent_interface {
public:
virtual void foo() = 0;
};
class child1_interface : public parent_interface {
public:
virtual void bar() = 0;
};
class child2_interface : public parent_interface {
public:
virtual void baz() = 0;
}
然后我有具体类别提供该功能:
class parent : public parent_interface {
public:
void foo() override;
};
class child1 : public parent, public child1_interface {
public:
//using parent::foo; ??
void bar() override;
};
问题是,如果我尝试实例化child1对象,我会发现编译器错误
无法将字段
instantiation_name
声明为抽象类型,因为以下虚拟函数在child1中是纯粹的:void foo((
我可以通过在Child1中创建一种称为foo的方法来解决此问题,该方法称为parent :: foo,但我想知道是否有更清洁的解决方案。
您需要指定virtual
继承,以便编译器知道将基本类结合回一个。这应该为您编译(请参阅起作用(:
class parent_interface {
public:
virtual void foo() = 0;
};
class child1_interface : public virtual parent_interface {
public:
virtual void bar() = 0;
};
class parent : public virtual parent_interface {
public:
void foo() override
{
}
};
class child1 : public parent, public child1_interface {
public:
//using parent::foo; ??
void bar() override
{
}
};
有关更多信息,您可以在此处阅读有关虚拟基类的信息。
相关文章:
- 关于C++中具有多重继承"this"指针的说明
- C++中模板化异常类的多重继承
- 虚拟继承中是否存在多重继承?
- 如何在 c++ 多重继承中调用父非虚函数?
- 多重继承相同的方法名,没有歧义
- 使用enable_if解决多重继承歧义
- 多重继承导致虚假的模糊虚拟函数过载
- 多重继承和访问不明确的元素
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- 多重继承中的派生类的行为类似于聚合
- 为什么我的 Hippomock 期望在使用多重继承时失败
- 带有此指针的模板类多重继承构造函数不起作用?
- 使用多重继承时出现编译错误
- 增强多重继承的序列化
- 多重继承:跳过'virtual'关键字并拒绝菱形层次结构的使用?
- 使用父类方法覆盖的多重继承
- 多重继承:调用所有覆盖的函数
- C 多重继承,虚拟方法覆盖问题和协变量返回类型
- 用于在多重继承中覆盖函数的语法
- 用多重继承调用c++中被覆盖的函数