C++ 从接口(interface)和转换的多重继承

标签 c++ inheritance multiple-inheritance

如果我有一个继承自一个接口(interface)(如下)和 wxPane

的类
class iClassA
{
public:
    virtual ~iClassA() {}
    virtual bool FuncA() = 0;
};

具体的:

class ConcereteClass : public iClassA, wxPane
{
public:
    bool FuncA();
};

可以接受类型为 iClassA *std::vector 包含我的 ConcereteClass 或者 vmaps 对转换感到困惑?

最佳答案

是的,这是完全可以接受的。这也是一种很常见的模式。

std::vector<iClass*> v;
v.push_back(new ConcreteClass);
v[0]->FuncA(); // calls ConcreteClass::FuncA();

if (ConcreteClass* cc = dynamic_cast<ConcreteClass*>(v[0])) {
    // succeeds
}

delete v[0];   // correctly calls ConcreteClass::~ConcreteClass()

请注意,您继承自 wxPane privately。

关于C++ 从接口(interface)和转换的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29919668/

相关文章:

c++ - 在 Linux 上编译 C++ 代码。需要使用intel/icpc编译器。错误: "multiple definitions" related to inerited class

inheritance - 如何在golang中嵌入其他包的结构

c++ - GCC 无法区分 operator++() 和 operator++(int)

c++ - 是否有可能使一个类成为两个不同层次结构的子类?

c++ - 某些输入的展平/重构 C++ 模板源

c++ - 编译器是否检测到错误的共享变量?

c++ - 无法将整数分配给动态分配的二维数组

c++ - 关闭 FreeGLUT 的最佳方式是什么?

java - 从父级继承子级特定方法

C++ 虚拟继承和构造函数