Я учусь на C ++, и это сводит меня с ума. Самое забавное то, что ни один гид не говорит мне точно, что делать, и ни один вопрос, кажется, не решает проблему здесь. Вероятно, это отчасти связано с проблемой нескольких компиляторов C ++. Я использую Visual Studio 2010 и просто пытаюсь создать класс с перегрузкой операторов. У меня есть заголовок, класс, основной и т. Д .:
//File Rational.h
#ifndef RATIONAL_H
#define RATIONAL_H
class Rational
{
private:
int numerator;
int denominator;
public:
Rational(int num = 0, int den = 1);
Rational operator+(const Rational &);
Rational operator=(const Rational &);
Rational operator+=(const Rational &);
int getNum();
int getDenom();
};
#endif
И класс:
#include "stdafx.h"
#include <iostream>
using namespace std;
class Rational
{
private:
int numerator;
int denominator;
public:
Rational(int num = 0, int den = 1)
{
numerator = num;
denominator = den;
}
Rational operator+(const Rational &r)
{
return Rational(((numerator * r.denominator) + (r.numerator * denominator)), (denominator * r.denominator));
}
Rational operator=(const Rational &r)
{
denominator = r.denominator;
numerator = r.numerator;
}
Rational operator+=(const Rational &r)
{
return Rational(((numerator * r.denominator) + (r.numerator * denominator)), (denominator * r.denominator));
}
Функции getter - это то, что вы ожидаете и не ошибаетесь, но конструктор и перегруженные методы дают мне неразрешенный внешний вид. Я даже не могу вспомнить, сколько всего я пробовал в методах и заголовке. Я видел дюжину или около того руководств и примеров, и ни один из них не работал. Я получил его для компиляции один раз с операндом + в качестве функции-друга, но он должен быть функцией-членом для назначения, и перемещение его в функцию-член каким-то образом нарушило все вышеперечисленное. Я схожу с ума здесь. Эти методы не разрешат, что бы я ни делал!
Основной метод вызывает все это стандартным способом и включает файл Rational.h. Все файлы находятся в одном каталоге.