【发布时间】:2012-06-12 07:08:37
【问题描述】:
这是一个简单的问题,我确信以前已经回答过,但我似乎找不到好的答案。
我有课,点:
template<class T>
Point{
\\code
}
...现在我想要一个点向量,其中一些将 T 作为整数,而将 T 作为双精度数。我想写类似的东西
template<class T>
std::vector<Point<T> > points;
但是,唉,这不会编译错误“在'模板'之前的预期主表达式”。我无法对这段代码坐立不安以使其工作。同样相关的是点在主类中,所以我不能将模板声明粘贴在函数之外。
如果有人可以指导我找到解决方案,我将不胜感激。
谢谢。
【问题讨论】:
-
一个向量只能包含一种类型的元素。所以你可以选择 Point
或 Point 但不能混合使用。 -
不应该是
std::vector<Point<int> > points吗? -
你想要一个模板化的
typedef吗? -
类模板的不同实例化是完全不相关的类型:
Point<int>和Point<double>,从编译器的角度来看,是两种不同的类型,没有任何共同之处。如果您想以相同的方式操作各种类型的点,则需要使用通用基类。 -
@LucTouraille:使用继承会强制 OP 使用引用或指针,它可能不是“值类型”类的好选择(我假设
Point是)。在这种情况下,变体方法可能会更好。