我们如何在该类中使用运算符?

时间:2012-01-27 21:26:41

标签: c++ class operator-keyword

我想在类中编写一个函数,使用我之前在该类中定义的运算符。但是我不知道如何向运算符显示现在必须使用YOUR的值(x, Y)。 (我看到有人在php中使用$this->func_name。但在这里我不知道。

class Point
{
  public:

    int x;
    int y;

    bool operator==(Point p)
    {
        if (x == p.x && y == p.y)
            return 1;
        return 0;
    }

    bool searchArea(vector <Point> v)
    {
        for (int i = 0; i < v.size(); i++)
            if (v[i] == /* what ?? */  )
                return 1;
        return 0;
    }
};

int main()
{
    //...
.
.
. 
    if (p.searchArea(v))
       //...
}

3 个答案:

答案 0 :(得分:4)

您需要/* what ?? */

*this

答案 1 :(得分:2)

我见过两种方式:

 if ( *this == v[i] )
 if ( operator==(v[i]) )

this是指向当前对象的指针。 *this是当前对象的引用。由于比较运算符采用引用,因此必须取消引用this指针。或者你可以直接调用成员函数,它隐式地传递this

答案 2 :(得分:2)

C ++中的

this是指向当前对象的指针。如果要访问实际对象,则需要添加取消引用运算符*(与Java不同)。例如:(*this).x

class Point
{
  public:

    int x;
    int y;


    bool operator==(Point p)
    {
        if (x == p.x && y == p.y)
            return 1;
        return 0;
    }

    bool searchArea(vector <Point> v)
    {
        for (int i = 0; i < v.size(); i++)
            if (v[i] == *this  )
                return 1;
        return 0;
    }
};