我试图重载<在LinkedList类中嵌套Node类的操作符。我是这样设置的:>
LinkedList<T>::Node& LinkedList<T>::Node::operator<(const LinkedList<T>::Node& rhs){
return rhs;
}
但是我得到了错误1>c:userskevinworkspacelinkedlistlinkedlist.h(185): warning C4183: '<': missing return type; assumed to be a member function returning 'int'
我尝试返回1,但这也不工作。
Node
是一个依赖的名称,所以你需要使用typename
来告诉编译器你正在引用一个类型。
template <typename T>
const typename LinkedList<T>::Node&
LinkedList<T>::Node::operator<(const typename LinkedList<T>::Node& rhs)
还要注意,您有一个const
引用,但是您返回的是非const引用。您应该返回const
引用,但在实际代码中,如果operator<
不返回bool
,则会非常令人困惑。这样更有意义:
template <typename T>
bool LinkedList<T>::Node::operator<(const typename LinkedList<T>::Node& rhs) const