重载==不适用于二进制树
Overloaded == is not working for binary tree
bool Tree::operator==(const Tree &that) const {
return Node::is_equal(this->getRoot(), that.getRoot());
}
bool Tree::operator!=(const Tree &that) const {
return !Node::is_equal(this->getRoot(), that.getRoot());
}
int main(){
Tree *t = new Tree();
const Tree *t2 = new Tree();
cout << (t == t2) << endl;
return 0;
}
重载的==函数没有被调用,我不确定为什么?相反,它只是比较内存中的地址。
在中
Tree *t = new Tree();
const Tree *t2 = new Tree();
cout << (t == t2) << endl;
您比较Tree的指针,要调用您的运算符,您需要比较Tree 或者使用您的指针来取消引用:Tree t, t2;
cout << (t == t2) << endl;
Tree *t = new Tree();
const Tree *t2 = new Tree();
cout << (*t == *t2) << endl;
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 为什么二进制搜索在我的测试中不起作用
- C++:实际上不是从二进制文件中读取
- 为什么许多项目不提供预编译的二进制文件?
- 为什么编程语言被编译为汇编程序而不是二进制?
- C++|以一种很好的方式将树(不一定是二进制的)打印到stdout
- 无法使用迭代器查找类对象。(二进制 '==': 'userInfo' 不定义此运算符)
- OpenGL/Glew C++纹理不适用
- 十进制到二进制的实现不能完全适用于我大学的检查器。问题或提示可能是什么
- 当我在 windows7 中安装程序时,我指定的字体大小不适用
- accelerator.cu(8): 错误:属性"managed"在这里不适用?
- typedef X=<T>T::UserType1,但如果不适用,typedef X<T>=UserType2
- 用C++编写一个程序,对一个简单的序列求和:1/N + 2/N-1 + 3/N-2+ ...不适用
- 当我在Windows上运行它时,为什么我的Linux编译二进制不起作用
- 计算 c# 中二进制文件符号的频率不起作用,但适用于等效的 c++ 代码
- 二进制不是使用 Visual Studio 2008 中的调试信息构建的
- _WIN32_WINNT标头中的定义更改,这是否会导致二进制不兼容
- SFINAE在这里不适用吗?
- 当是复制和交换习语不适用
- 在函数实参中使用模板形参不适用gcc4.8