我有这个功能:
template <typename T>
List<T>::ListNode *List<T>::find(int index) const
{
if ( (index < 1) || (index > getLength()) )
return NULL;
else
{
ListNode *cur = head;
for (int skip = 1; skip < index; ++skip)
cur = cur->next;
return cur;
}
}
这给了我这两个错误,每个错误都在第二行:
expected constructor, destructor, or type conversion before '*' token
expected `;' before '*' token
我使用模板的所有其他方法都可以正常工作。我认为问题是我调用ListNode结构的语法错误。我之前没有模板工作,现在我正在尝试用模板实现它,我收到这些错误。
答案 0 :(得分:8)
应该是
template <typename T>
typename List<T>::ListNode *List<T>::find(int index) const
// ...
typename
告诉编译器List<T>::ListNode
代表一种类型。在模板内部时,遇到::
时会出现解析歧义。因此,当typename
后面的任何类型为
::
关键字。