【问题标题】:nested node class operator overload < c++ [duplicate]嵌套节点类运算符重载< c ++ [重复]
【发布时间】:2014-10-11 13:45:34
【问题描述】:

我正在尝试为我的 LinkedList 类中的嵌套 Node 类重载

LinkedList<T>::Node& LinkedList<T>::Node::operator<(const LinkedList<T>::Node& rhs){
    return rhs; 
}

但我只是得到错误 1&gt;c:\users\kevin\workspace\linkedlist\linkedlist.h(185): warning C4183: '&lt;': missing return type; assumed to be a member function returning 'int'

我尝试返回 1,但这也不起作用。

【问题讨论】:

  • 在header中,是不是忘记放返回类型了?
  • 即使它只是一个代码 sn-p:您正试图将 const Node& 作为 Node& 返回

标签: c++ linked-list operator-overloading nodes


【解决方案1】:

Node 是一个依赖名称,所以你需要使用typename 告诉编译器你指的是一个类型。

template <typename T>
const typename LinkedList<T>::Node& 
LinkedList<T>::Node::operator<(const typename LinkedList<T>::Node& rhs)

另外,请注意您有一个 const 引用,但您返回的是一个非常量引用。您应该返回一个 const 引用,但在实际代码中,operator&lt; 不返回 bool 会非常混乱。这会更有意义:

template <typename T>
bool LinkedList<T>::Node::operator<(const typename LinkedList<T>::Node& rhs) const

【讨论】:

  • 应该放在节点类还是链表类中?
  • @kevorski 这是一个定义,它超出了两个类。如果 Node 类定义,则声明进入内部。你也可以把定义放在那里,但你必须把语法弄对。
猜你喜欢
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 2011-10-27
  • 2014-10-15
  • 2012-12-22
  • 2016-09-26
  • 2012-04-21
  • 1970-01-01
相关资源
最近更新 更多