【发布时间】:2013-10-17 15:58:46
【问题描述】:
我有:
class A
{
public:
A();
~A();
void addClass(int id, C class);
C getClass(int id);
private:
hash_map<int, C> map; //TEMPLATE
};
假设C 是一个父类。在主方法中是否有任何方法可以将方法addClass 与B 类的对象和D 类的另一个对象一起使用,它们都派生自类C?当我这样做并尝试方法getClass 时,我注意到我将无法使用类B 或类D 的特定属性,只能使用它们的父类C 的属性,好像他们被转换成他们的父类。我尝试使用模板,但它似乎不起作用:.
编辑:这个问题完全失败了,我并不是要从 C 派生类 A...
【问题讨论】:
-
不要用文字描述代码,贴出来。
-
切片之类的?
-
你为什么要从
C派生A,在你的上下文中对我来说没有意义。 -
您可以添加指向 A 或 B 类的指针。您不能添加对象。你应该使用虚函数。另一个选项是从基类指针到其子类的 dynamic_cast,但它可能会失败
标签: c++ templates inheritance derived-class