编译器无法找到内部类型

时间:2013-11-19 16:25:48

标签: c++ class templates

我收到以下错误:

Error   1   error C2143: syntax error : missing ';' before '&'  
Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Error   3   error C2065: 'Item' : undeclared identifier 
Error   4   error C2065: 'Order' : undeclared identifier    

这段代码:

template <class Item, class Order>
Iterator& DLinkedOrderedList<Item, Order>::Iterator::operator++(){}

如果我没弄错的话,上面这行是函数返回类型迭代器的正确语法&amp;?

1 个答案:

答案 0 :(得分:2)

DLinkedOrderedList<Item, Order>::需要Iterator,因为类声明之外的返回类型是未知的:

template <class Item, class Order>
DLinkedOrderedList<Item, Order>::Iterator& DLinkedOrderedList<Item, Order>::Iterator::operator++(){}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果您不喜欢冗长的多余内容,可以使用auto->

template <class Item, class Order>
auto DLinkedOrderedList<Item, Order>::Iterator::operator++() -> Iterator& {}