C++ 从接口和强制转换的多重继承
C++ Multiple inheritence from interfaces and casting
如果我有一个继承自一个接口(下图)的类,wxPane
class iClassA
{
public:
virtual ~iClassA() {}
virtual bool FuncA() = 0;
};
承认:
class ConcereteClass : public iClassA, wxPane
{
public:
bool FuncA();
};
是否可以接受包含我的ConcereteClass
的 iClassA *
型std::vector
,或者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。
相关文章:
- 关于C++中具有多重继承"this"指针的说明
- C++中模板化异常类的多重继承
- 虚拟继承中是否存在多重继承?
- 如何在 c++ 多重继承中调用父非虚函数?
- C++ MSVC 中的访问冲突,但不在 GCC 中进行多重继承和强制转换
- 在多重继承场景中动态强制转换类型
- 将void*强制转换为具有多重继承的类
- 多重继承强制转换未按预期工作
- c++多重继承强制转换是如何工作的
- C++ 从接口和强制转换的多重继承
- 虚拟多重继承和强制转换
- 强制转换为多重继承
- C++ 中的多重继承转换
- 多重继承c++,如何进行类型转换
- c++中具有多重继承的强制转换
- 多重继承和强制类型转换
- 当使用多重继承时,静态强制转换是安全的
- 从基类到不同派生类的多重继承强制转换
- 将我的c++代码转换为Java:转换多重继承
- 如何使用多重继承执行强制转换