编译器找不到内部类型

Internal type cannot be found by compiler

本文关键字:类型 内部 找不到 编译器      更新时间:2023-10-16

我得到以下错误:

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++(){}

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

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

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& {}