Задать вопрос
@Koala-Punch

Как сложить 2 объекта одного класса?

Вечер добрый! Столкнулся с такой проблемой что не могу сообразить как реализовать сложение 2х объектов класса ( а коли тут повис то пока отложил напотом, так сказать, всякие >> << в поток и считывания с файла)
Собственно что я подразумеваю под сложением ? Перегруженный operator+. Путем изысканий переоткрыл что существует в классах this поэтому объявлять я перегрузку должен как:
friend int operator+(myClass A, myClass B){
Сам класс:
class myClass{
int a; int b; // поля класса тобишь прим. A(0, 0) и соотвественное сложение A(0, 0) + B(1, 1) = return C(1, 1);
public:
/*функции*/};


Как собственно это реализовать ? Поскольку единственное что сообразил это c = A + B: но это крашит програмку
  • Вопрос задан
  • 6681 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Если сложение объектов должно давать новый объект, то и функция сложения должна возвращать объект, а не int.
friend myClass operator+(const myClass &A, const myClass &B){
    return myClass(A.a + B.a, A.b + B.b);
}
Ответ написан
Для начала разобраться, что именно вы хотите складывать и что получить в результате. Если складываются объекты одного класса, то лучше сделать оператор членом класса. Но это совсем не обязательно - операторов может быть несколько для разных случаев:

class myClass {
...
    // myClass + myClass
    myClass operator+(const myClass& B)
    {
        return myClass(a + B.a, b + B.b);
    }
}

// myClass + int
myClass operator+(const MyClass& A, int i)
{
    return myClass(A.a + i, A.b);
}

// int + myClass
int operator+(int i, const MyClass& B)
{
    return i + B.a;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы