Я создал код, используя концепцию перегрузки операторов в c ++ для добавления двух рациональных чисел, перегружая операторы + (плюс) и << (вставка), и я не могу получить доступ к функции из области действияПерегрузка оператора оператора +.Как получить доступ к функции LCM () из области действия оператора + перегружен? </p>
Я пытался использовать функцию друга для доступа к моей функции 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;
}
И я получаю ошибку:
ошибка: 'LCM' не был объявлен в этой области