【发布时间】:2011-08-16 02:41:54
【问题描述】:
我不知道如何解决模板和继承问题。
在我的代码中有一个模板类,看起来或多或少像:
template<typename T>
class Derived : public Base{
T value;
public:
Derived(T arg) { value=arg; };
T getValue() { return value;};
};
class Base{
};
我的 Base 类的唯一目的是对 Derived 类的对象数组进行分组。参数 T 通常是 double、float 或 complex,尽管 int 和 structs 也可能有用。 (稍后应该会有更多类似的派生类,并带有一些附加功能。)
我可以创建这样的组
Base** M = new Base*[numElements];
并将派生类的元素分配给它们,例如:
M[54] = new Derived<double>(100.);
但是我怎样才能知道第 55 个元素的值是 100 呢? 我需要类似的东西
virtual T getValue() = 0;
但是 T 是派生类的类型名,对于这个数组的任意两个元素可能不同。
【问题讨论】:
-
这似乎与this question非常相似。
标签: c++ templates polymorphism