Почему ошибка в параметре типа ссылка?
class m {
public:
int n;
m(int n) :n(n) {};
m(m& nn) {
n = nn.n;
}
m operator=(m& ex);
};
m m::operator=(m& ex) {
this->n = ex.n;
return n;
}
m f() {
m k(8);
return k;
}
ostream& operator<<(ostream& os, m& ex) {
os << ex.n<<endl;
}
int main() {
m m1(1), m2(2);
m1 = f();//вернулся тип m, а дальше просто как обычная передача
//параметра по ссылке, чтобы не занимать место
cout << m1;
}
почему ошибка=бинарный "=": не найден оператор, принимающий правый операнд типа "m" (или приемлемое преобразование отсутствует)
есть же такое
int foo(int& v){
++v;}
int main(){
int x=9;
foo(x)// здесь же тоже не ссылочный тип
}