gpt4 book ai didi

C++ 我需要重载哪些运算符才能使这个 A1 += A2 * floatValue 工作?

转载 作者:太空宇宙 更新时间:2023-11-04 16:05:11 26 4
gpt4 key购买 nike

我需要重载哪些运算符才能组成这个词?

变量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

关于C++ 我需要重载哪些运算符才能使这个 A1 += A2 * floatValue 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36704198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com