Gue*_*ham 0 c++ syntax templates
我有这个功能:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我这两个错误,每个错误都在第二行:
expected constructor, destructor, or type conversion before '*' token
expected `;' before '*' token
Run Code Online (Sandbox Code Playgroud)
我使用模板的所有其他方法都可以正常工作.我认为问题是我调用ListNode结构的语法错误.我之前没有模板工作,现在我正在尝试用模板实现它,我收到这些错误.
它应该是
template <typename T>
typename List<T>::ListNode *List<T>::find(int index) const
// ...
Run Code Online (Sandbox Code Playgroud)
typename告诉编译器List<T>::ListNode代表一个类型.在模板内部时::,遇到时会出现解析歧义.因此,typename当后面的任何::类型是一个类型时,您必须使用该关键字.
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |