gpt4 book ai didi

c++运算符重载,

转载 作者:太空狗 更新时间:2023-10-29 20:28:10 25 4
gpt4 key购买 nike

下面显示的代码有什么问题?请有人点灯。感谢您的宝贵时间!

    #include<iostream.h>
using namespace std;

struct mydata{
int mx;
mydata(int x = 0){}
mydata operator+(const mydata& rhs){

mydata temp(rhs);
return temp;
}
operator int() const{ return mx; }
operator double() const{ return mx; }
};


int main(){
mydata d;
mydata r = d + 5; // L1
5 + d; // L2
d + d; // L3
}

最佳答案

首先,您没有说明问题是什么,但大概您需要一个 operator+ 来对两个 mydatamx 值求和对象:

mydata operator+(const mydata& rhs){
return mydata (mx + rhs.mx);
}

接下来,我建议将其设为非成员函数,以便以相同的方式处理 LHS 和 RHS,解决 L2 中的问题:

mydata operator+(const mydata& lhs, const mydata& rhs){
return mydata (lhs.mx + rhs.mx);
}

最后,您将剩下一个不明确的重载,因为编译器无法决定是使用内置的 operator+(int,int) 还是您自己的 operator+(const mydata&, const我的数据&)。您可以通过删除强制转换运算符 int()double() 来解决此问题。

查看演示 here .

关于c++运算符重载,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13927604/

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