我需要重载哪些运算符才能组成这个词?
变量A1和A2都是类A,变量floatValue是float类型。
A1 += A2 * floatValue;
我已经重载了这个运算符
A operator+() const;
A operator+=(const A value);
A operator*(const A value);
friend A operator*(const A val2, float val);
但是,我收到错误消息“A 类没有合适的复制构造函数”
我的类中有这个构造函数
A();
A(float val1, float val2);
A(float value);
感谢您的回答。
最小的例子:
#include <iostream>
using namespace std;
struct foo {
float val;
foo(float val): val(val){}
foo &operator+=(foo const &other) {
this->val += other.val;
return *this;
}
friend foo operator*(foo const &lhs, foo const &rhs) {
return lhs.val*rhs.val;
}
};
int main() {
foo a = 5, b = 6;
a += b * 3;
cout << a.val << endl;
return 0;
}
参见:http://ideone.com/6pD2pr
如果使用显式构造函数,您可能希望改用此示例:
#include <iostream>
using namespace std;
struct foo {
float val;
explicit foo(float val): val(val){}
foo &operator+=(foo const &other) {
this->val += other.val;
return *this;
}
friend foo operator*(foo const &lhs, float val) {
return foo(lhs.val*val);
}
};
int main() {
foo a(5), b(6);
a += b * 3;
cout << a.val << endl;
return 0;
}
参见:http://ideone.com/o8Vu1d
我是一名优秀的程序员,十分优秀!