为什么==运算符没有正确重载(因此它只能返回true
)?我试过没有*
,但没有帮助。
#include "stdafx.h"
#include <iostream>
class alfa
{
public:
int x;
bool operator == (alfa * &f)
{
return true;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
//alfa alfa2;
alfa * tab[2];
tab[0] = new alfa;
tab[1] = new alfa;
if(tab[0] == tab[1])
{
std::cout << "tak";
}
scanf("%d");
}
答案 0 :(得分:4)
您的运算符是alfa
的成员,因此它无法接受两个alfa
指针,而是LHS上的alpha
实例和指向alpha
的指针在RHS上。
如果您希望操作员接受两个alpha
指针,则必须将其设为非成员:
class alfa
{
public:
int x;
};
bool operator == (const alpha* lhs, const alfa* rhs)
{
return true;
}
但是,不允许为内置类型(如指针)重载比较运算符。您必须提供可以对两个实例执行操作的运算符:
bool operator == (const alpha& lhs, const alfa& rhs)
{
return true;
}
然后,给定两个alpha
指针a
和b
,您可以这样比较它们:
*a == *b;