嵌套节点类操作符重载



我试图重载<在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

相关内容

  • 没有找到相关文章

最新更新