gpt4 book ai didi

c++ - 如何定义一些可以从 (+) 运算符的运算符重载范围内访问的函数?

转载 作者:行者123 更新时间:2023-11-28 04:19:17 24 4
gpt4 key购买 nike

我通过使用 c++ 中的运算符重载概念创建了一个代码,通过重载 +(plus) 和 <<(Insertion) 运算符来添加两个有理数,但我无法获得从范围访问的函数+ 运算符的运算符重载。如何从 operator+ 重载的范围访问 LCM() 函数?

我尝试使用 friend 函数从 operator+ 重载函数的范围内访问我的 LCM() 函数,但它不起作用!

#include <iostream>
using namespace std;

class Rational {

private:
int num, den;

public:
int getnum()
{
return this->num;
}

int getden()
{
return this->den;
}

Rational(int num = 0, int den = 0)
{
this->num = num;
this->den = den;
}
int LCM(int a, int b);
friend ostream& operator<<(ostream& out, Rational& r);
friend Rational operator+(Rational x, Rational y);
};

int Rational::LCM(int a, int b)
{

int i = a > b ? a : b;
for (i; i <= a * b; i++) {
if (i % a == 0 && i % b == 0) {

break;
}
}
return i;
}

ostream& operator<<(ostream& out, Rational& r)
{

out << r.getnum() << "/" << r.getden();

return out;
}

Rational operator+(Rational x, Rational y)
{

Rational temp;
int temp1;
int div;
temp1 = LCM(x.den, y.den);

temp.num = (int(temp1 / x.den) * x.num) + (int(temp1 / y.den) * y.num);
temp.den = temp1;

return temp;
}

int main()
{

Rational r1(3, 2);
Rational r2(9, 4);
Rational r3;
r3 = r1 + r2;
cout << r3;

return 0;
}

我得到了错误:

error: ‘LCM’ was not declared in this scope

最佳答案

我会说 int Rational::LCM(int a,int b)Rational 类没有任何关系,应该是一个实用程序函数(非成员函数),那么你就可以在任何地方使用它

关于c++ - 如何定义一些可以从 (+) 运算符的运算符重载范围内访问的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55834032/

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