C++ 在类方法中对此实例(this)使用重载运算符

C++ 在类方法中对此实例(this)使用重载运算符,c++,operator-overloading,C++,Operator Overloading,我正在写一个2D向量的类,需要做点积 我已经重载了*操作符来执行此操作,但是当执行此*此时,它会给我一个错误: 类向量2{ 私人: 浮动x,y; 公众: 向量2(浮点x,浮点y){ x=x; y=_y; } //点积 浮点运算符*(常量向量2和其他){ 返回x*other.x+y*other.y; } //震级(abs) 浮动幅度(){ 浮点点=(this)*(this);//错误如下:表达式必须具有算术或非范围枚举类型 返回标准::sqrt(dot); } 向量2运算符+(常量向量2和其他){

我正在写一个2D向量的类,需要做点积

我已经重载了
*
操作符来执行此操作,但是当执行
此*此
时,它会给我一个错误:

类向量2{
私人:
浮动x,y;
公众:
向量2(浮点x,浮点y){
x=x;
y=_y;
}
//点积
浮点运算符*(常量向量2和其他){
返回x*other.x+y*other.y;
}
//震级(abs)
浮动幅度(){
浮点点=(this)*(this);//错误如下:表达式必须具有算术或非范围枚举类型
返回标准::sqrt(dot);
}
向量2运算符+(常量向量2和其他){
返回向量2(x+other.x,y+other.y);
}
};
错误是:表达式必须具有算术或非范围枚举类型


感谢您的帮助!谢谢:)

这个
关键字是指针,不是实际对象


因此,正确的代码是
(*this)*(*this)

修改为(*this)*(*this)?
这是一个指针,指针相乘没有意义。哦,谢谢!我没有意识到“this”关键字是一个指针。我会记住:)这不是答案。你已经在评论中说了谢谢。你可以回答你自己的问题,但这对任何未来的读者都没有用处。不是吗?我的意思是,如果其他人有这个问题,他们会看到
是一个指针,而不是一个引用/对象。另外,感谢您的精彩输入:)经过一些改写,这基本上是一个答案