0

Что не так с кодом. Компилятор выдает что нельзя складывать int и Der(пользоват класс).

#include <iostream> using namespace std; class Der { int a; public: Der(){ a=0; } int p(int l){ a=l;} Der operator +(Der &v){ Der x3; x3=this->a+v.a; return x3; } }; int main(){ Der x1; x1.p(4); Der x2; x2.p(6); Der x3; x3=x1+x2; cout>>x3; } https://code.sololearn.com/coe6sikZdn5d/?ref=app

28th Jan 2021, 10:17 AM
Михаил Михаил
Михаил Михаил - avatar
5 Réponses
+ 4
Your `+` operator is not working, so I added a parametric constructor to make instantiation be simpler, and add an `<<` operator overload so the instance of Der class can be inserted into output stream. https://code.sololearn.com/c8iZqpMjaGHn/?ref=app
28th Jan 2021, 12:17 PM
Ipang
+ 4
The int p() function has no return statemement. You have to insert a return or change on void function.
28th Jan 2021, 11:49 AM
JaScript
JaScript - avatar
+ 2
Использование функции / оператора `friend` необходимо для того, чтобы функция / оператор получила доступ к закрытому члену <a>. Насколько я понимаю, нам нужно получить доступ к <other> .a в перегрузке оператора `<<`, поэтому перегрузка оператора `<<` должна быть объявлена ​​как `friend`. https://www.sololearn.com/learn/CPlusPlus/1899/
28th Jan 2021, 1:14 PM
Ipang
+ 1
Спасибо большое!!!
28th Jan 2021, 12:41 PM
Михаил Михаил
Михаил Михаил - avatar
+ 1
А можно ли сделать без friend как функцию класса?
28th Jan 2021, 1:02 PM
Михаил Михаил
Михаил Михаил - avatar