如何覆盖运算符<

时间:2010-09-19 16:18:53

标签: c++ templates operators override

我正在尝试覆盖运算符<如下:

在Node中:

bool operator <(const Node* other) {
  return *(this->GetData()) < *(other->GetData());
}

车内:

bool operator <(const Vehicle &other) {
  return this->GetKilometersLeft() < other.GetKilometersLeft();
}

调用运算符:

while (index > 0 && m_heapVector[index] < m_heapVector[parent(index)])

矢量定义:

vector<Node<T>*> m_heapVector;

我检查了这个电话,并没有调用被覆盖的运营商。

1 个答案:

答案 0 :(得分:4)

这是因为你正在比较指针,

你必须做到:

*m_heapVector[index] < *m_heapVector[parent(index)]

并相应调整运营商

bool operator<(const Node &other) const;