0

试图在 C++ 类中重载 < 和 > 运算符

 template <typename T>
 bool BinaryTree<T>::operator < (BinaryTree<T> &B) {
   return (this->count < B.setCount(0));
 } 

template <typename T>
float BinaryTree<T>::setCount(float c)
{
  count += c;
  return count;
}

其中 setCount(0) 返回 B obj 的计数。但是无论比较的数字如何,这总是输出真。

将我的代码更改为

template <typename T>
bool BinaryTree<T>::operator < (const BinaryTree<T> &B) {
  return (this->count < B.count);
}


printf("%c %lf\n", tree[0]->getData(), tree[0]->setCount(0));
printf("%c %lf\n", tree[1]->getData(), tree[1]->setCount(0));

Output >

a 0.750000
b 0.250000

if(tree[0] < tree[1])
   printf("0 < 1\n");
else printf("1 > 0\n");

Output > 

0 < 1  
4

1 回答 1

4

这:

  printf("%c %lf\n", tree[0]->getData(), tree[0]->setCount(0));
  printf("%c %lf\n", tree[1]->getData(), tree[1]->setCount(0));

向我建议tree持有指向您的BinaryTree<T>.

在这里,您正在比较指针,即内存地址,而不是值:

if(tree[0] < tree[1])
   printf("0 < 1\n");
else printf("1 > 0\n");

你可能需要

if(*(tree[0]) < *(tree[1]))
   printf("0 < 1\n");
else printf("1 > 0\n");
于 2012-05-01T09:03:09.057 回答