-1

为什么 == 运算符没有正确重载(以便它只能返回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");
}
4

1 回答 1

4

您的运算符是 的成员alfa,因此它不能接受两个alfa指针,而是接受alphaLHS 上的一个实例和alphaRHS 上的一个指针。

如果您希望运算符接受两个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指针ab,您可以像这样比较它们:

*a == *b;
于 2013-11-09T13:05:18.913 回答