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

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

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

包含我的std::vectoriClassA *类型的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 private ly继承的。

08-25 00:24