Я делаю дробный класс для школьного проекта, и у меня ломается мозг. Мне сказали перегрузить операторы ‹< и >> с помощью ключевого слова friend. Но я получаю ошибки из-за этого.
Я разместил соответствующий код здесь: http://pastebin.com/NgCABGJ2
К этим ошибкам относятся: ошибка C2270: '‹<': модификаторы не разрешены для функций, не являющихся членами (эта ошибка относится ко всем тем, которые объявлены как друзья)
Это было в определении оператора ‹. ошибка C2333: 'Fraction :: operator ‹': ошибка в объявлении функции; пропуска тела функции
Всего 46 ... это кошмар.
РЕДАКТИРОВАТЬ:
Спасибо, я решил почти все ошибки, но осталось еще 3
ошибка C2664: 'Fraction :: Fraction (const Fraction &)': невозможно преобразовать параметр 1 из 'int' в 'const Fraction &'. Происходит в этом операторе:
Fraction<int> test1, test2, test3(10);
ошибка C2248: «Fraction :: operator ==»: невозможно получить доступ к закрытому члену, объявленному в классе «Fraction». Ошибка C2248: «Fraction :: operator‹ »: невозможно получить доступ к закрытому члену, объявленному в классе« Fraction »
Я не понимаю этих двух, но это происходит в следующих утверждениях:
if (test1 == test2)
cout << "\nTest1 is equal to Test2";
if (test1 < test2)
cout << "\nTest1 is less than Test2";
Спасибо!
‹>‹> ‹>> РЕДАКТИРОВАТЬ 2‹ ›>‹> ‹>
Я исправил другие ошибки частного доступа, но теперь у меня есть несколько действительно странных ошибок:
Полный код: http://pastebin.com/MVrB67SR
Ошибки:
Ошибка 1, ошибка LNK2001: неразрешенный внешний символ «class Fraction __cdecl operator- (class Fraction const &, class Fraction const &)» (?? G @ YA? AV? $ Fraction @ H @@ ABV0 @ 0 @ Z) Ошибка 2 error LNK2001: неразрешенный внешний символ «класс Fraction __cdecl operator + (class Fraction const &, class Fraction const &)» (?? H @ YA? AV? $ Fraction @ H @@ ABV0 @ 0 @ Z) Ошибка 3 Ошибка LNK2001: неразрешенный внешний символ "класс Fraction __cdecl operator / (class Fraction const &, class Fraction const &)" (?? K @ YA? AV? $ Fraction @ H @@ ABV0 @ 0 @ Z) c: \ Users \ caleb jares \ documents \ Visual Studio 2010 \ Projects \ Solution11-5 \ Solution11-5 \ Solution11-5.obj Ошибка 4, ошибка LNK2001: неразрешенный внешний символ «оператор класса Fraction __cdecl * (класс Fraction const &, класс Fraction const &)» (?? D @ YA? AV? $ Fraction @ H @@ ABV0 @ 0 @ Z) Ошибка 5, ошибка LNK2001: неразрешенный внешний символ "class std :: basic_ostream> & __cdecl operator ‹< (class std :: basic_ostream> const &, class Fraction)" (?? 6 @ YAAAV? $ Basic_ostream @ DU? $ Char_traits @ D @ std @@@ std @@ ABV01 @V? $ Fraction @ H @@@ Z) Ошибка 6, ошибка LNK2001: неразрешенный внешний символ "class std :: basic_istream> & __cdecl operator >> (class std :: basic_istream> const &, class Fraction)" (?? 5 @YAAAV? $ Basic_istream @ DU? $ Char_traits @ D @ std @@@ std @@ ABV01 @ V? $ Fraction @ H @@@ Z) Ошибка 7, ошибка LNK1120: 6 неразрешенных внешних элементов
Еще раз спасибо за помощь!