【发布时间】:2014-06-10 05:54:51
【问题描述】:
我有一个类定义如下:
template <typename T> class list
{
private:
struct node
{
T val;
node *next;
} *origin;
node* iterate(node *first,node *last);
(...) code
};
这里定义了它的函数方法:
template <typename T>
node* list<T>::iterate(node *first,node *last)
{
while(first->next!=last)
{
first = first->next;
}
return first;
}
由于该类使用模板功能,所有内容都写在标题中。
问题是当我尝试编译时它给了我这些错误:
error C2143: syntax error : missing ';' before '*'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2065: 'T' : undeclared identifier
error C2923: 'list' : 'T' is not a valid template type argument for parameter 'T'
所有这 4 个错误都显示在这一行:
template <typename T>
node* list<T>::iterate(node *first,node *last)
在所有情况下,函数都是从类中以这种方式调用的:
node* aux = iterate(origin,origin);
这里有什么问题?为什么它不起作用?
【问题讨论】:
标签: c++ class templates methods syntax-error