如果我有一个继承自一个接口(下面)和wxPane
class iClassA
{
public:
virtual ~iClassA() {}
virtual bool FuncA() = 0;
};
沈志南:
class ConcereteClass : public iClassA, wxPane
{
public:
bool FuncA();
};
std::vector
类型为iClassA *
的{{1}}是否可以包含ConcereteClass
,或者vmaps
是否会在投票时感到困惑?
答案 0 :(得分:6)
是的,完全可以接受。这也是一种非常常见的模式。
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
继承的。