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
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
+ 4
The int p() function has no return statemement. You have to insert a return or change on void function.
+ 2
Использование функции / оператора `friend` необходимо для того, чтобы функция / оператор получила доступ к закрытому члену <a>. Насколько я понимаю, нам нужно получить доступ к <other> .a в перегрузке оператора `<<`, поэтому перегрузка оператора `<<` должна быть объявлена как `friend`.
https://www.sololearn.com/learn/CPlusPlus/1899/
+ 1
Спасибо большое!!!
+ 1
А можно ли сделать без friend как функцию класса?