Я пытаюсь использовать ...Использование функций-членов в Другу Функция
int Fraction::GCD(int a, int b)
{
for (;;)
{
if (a == 0)
return b;
b %= a;
if (b == 0)
return a;
a %= b;
}
}
int Fraction::LCD(int a, int b)
{
return (abs(a * b)/GCD(a, b));
}
... который расположен в частном моего класса фракции.
Я получаю ошибку компиляции «„LCD“не был объявлен в этой области» при попытке вызвать его в моем перегруженный оператор другу ...
Fraction operator + (const Fraction &x, const Fraction &y)
{
Fraction temp;
static int lcd = LCD(x.denom, y.denom); // <--
if (lcd/x.denom != 1)
temp.num = x.num * (lcd/x.denom);
if (lcd/y.denom != 1)
temp.num += y.num * (lcd/y.denom);
temp.denom = LCD(x.denom, y.denom);
return temp;
}
Когда я объявил их как «статический Int», он дал мне ошибку компилятора, «не может объявить функцию-член«статический Int Фракция: : GCD (int, int) ', чтобы иметь статическую связь [-fpermissive]. " – urallsad
Вы были правы на самом деле, я объявлял их статическими в декларации и так же, как и определение, когда я снял это определение сработало! Спасибо! Можете ли вы рассказать о том, что делает реализация статики? – urallsad
static имеет несколько значений. Но для членов класса «статический» означает «независимо от какого-либо конкретного объекта этого класса». Здесь [небольшой учебник] (http://www.tutorialspoint.com/cplusplus/cpp_static_members.htm), чтобы рассказать вам больше об этом. – Christophe