我想在类中编写一个函数,使用我之前在该类中定义的运算符。但是我不知道如何向运算符显示现在必须使用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))
//...
}
答案 0 :(得分:4)
您需要/* what ?? */
*this
答案 1 :(得分:2)
我见过两种方式:
if ( *this == v[i] )
if ( operator==(v[i]) )
this
是指向当前对象的指针。 *this
是当前对象的引用。由于比较运算符采用引用,因此必须取消引用this
指针。或者你可以直接调用成员函数,它隐式地传递this
。
答案 2 :(得分:2)
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;
}
};