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

发布于 2024-12-29 16:46:33 字数 584 浏览 1 评论 0原文

我想在类中编写一个函数,使用我之前在该类中定义的运算符。但我不知道如何向运算符显示现在您必须使用 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))
       //...
}

I want to write a function in class, using the operator that I've defined it later before in that class.But I don't know how to show the operator that now you must use the values of YOUR (x,y).
(I saw someone used $this->func_name in php. but here I don't know.

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))
       //...
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

擦肩而过的背影 2025-01-05 16:46:33

你在哪里有 /* 什么? */ 你想要*这个

Where you have /* what ?? */ you want *this

故事和酒 2025-01-05 16:46:33

我见过两种方法:

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

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

I've seen two ways:

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

this is a pointer to the current object. *this is a reference to the current object. Since the comparison operator takes a reference, you have to dereference the this pointer. Or you can just call the member function directly, which passes this implicitly.

时光倒影 2025-01-05 16:46:33

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;
    }
};

this in C++ is a pointer to the current object. If you want to access to actual object you need to add de-referencing operator * (different from Java). For example: (*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;
    }
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文