【发布时间】:2015-02-19 05:36:03
【问题描述】:
我正在尝试进行运算符重载,但当我从 .cpp 运行此代码时不断收到错误
头文件原型是这样的,
const Velocity & operator = (const Velocity & rhs);
.cpp 成员函数看起来像这样。
const Velocity & Velocity :: operator = (const Velocity & rhs)
{
this->getDx() = rhs.getDx();
this->getDy() = rhs.getDy();
this->getX() = rhs.getX();
this->getX() = rhs.getY();
return *this;
}
在 main 中使用运算符的地方是这样的。
Velocity v1;
Velocity v2;
Velocity v3;
promptVelocity("Enter values for Velocity 1", v1);
promptVelocity("Enter values for Velocity 2", v2);
// Test operator =
v3 = v1;
cout << "Test operator = : " << v3 << endl;
我得到了这个->行的错误
lvalue required as left operand of assignment
请帮忙!
【问题讨论】:
-
可分配的吸气剂是……奇怪,而且可能不正确。你不认为你应该向我们展示他们的声明吗?此外,返回 const 引用的赋值运算符很奇怪......您是否试图防止类似
(x=y)=z的东西?似乎没有必要。 -
首先 - 我们正在猜测您的吸气剂实现。其次,您应该为您的问题创建一个最小的工作示例。第三,您为什么认为使用 getter 方法设置值是个好主意?
标签: c++ operator-overloading member-functions