【发布时间】:2015-07-11 23:46:55
【问题描述】:
我正在尝试我的第一个模板。以下代码编译:
template<class T,class C=int> class MyClass
{};
但不是这个:
#include <vector>
using namespace std;
template<class T,class C=vector<T>> class MyClass
{};
但我看到标准向量类模板是这样声明的:
template < class T, class Alloc=allocator<T> > class vector
{};
编译器抛出的错误是:
*error: 虚假的 '>>',使用 '>' 来终止模板参数列表
*错误:模板参数列表中'class MyClass'的定义
*错误:“类型名称”声明中有两个或多个数据类型
*错误:预期在 ';' 之前有 '>'令牌
*error: ';' 之前的预期 unqualified-id令牌
【问题讨论】:
-
也许你会从编译器中得到更好的错误信息。 error: 在连续的右尖括号之间需要一个空格(使用'> >') 我也假设你知道这个,但是error: no template named 'vector';你是说'std::vector'吗?
-
您可能想在
vector之前添加std::。 -
如果你编译成C++11,应该可以不用空格的>>。