【发布时间】:2012-11-12 14:35:15
【问题描述】:
我有以下课程:
template <typename T>
class A
{
public:
void method(const char *buffer);
// the template T is used inside this method for a local variable
};
现在我需要一个具有不同模板的此类实例数组,例如:
std::vector<A*> array;
array.push_back(new A<uint32_t>);
array.push_back(new A<int32_t>);
但是std::vector<A*> array; 不起作用,因为我显然需要指定一个模板,但我不能这样做,因为我在这个数组中存储了不同的类型。是否有某种泛型类型或其他解决方案?
【问题讨论】:
-
你能把一个成员函数作为模板,而不是整个类吗?
-
你可以让所有的
As 都从一个基类继承,尽管这往往很糟糕。 -
除了Martinho说的,
A不是类型,是类模板。所以你不能像std::vector<A>那样把它用作模板参数。 -
如果您不知道
something的参数需要是什么类型,您想如何调用array[0].method(something);? -
@R.MartinhoFernandes 我的目标是选择数组中的一个类并调用
method。此时method()应该已经知道使用哪种类型了。
标签: c++ arrays templates containers