David Kravets
template <class T>
T um(T &first, T &second)
{
T three;
three.i = first.i * second.i;
return three;
};
ostream &operator<<(ostream &out, myclass &prm1)
{
out << prm1.i;
return out;
};
При вызове функции
myclass a1,a2;
cout << um(a1,a2);
Ошибка , почему ?
По порядку:
1) Всегда дополняй вопрос "Ошибка, почему?" самой ошибкой. Ошибок много и никто не хочет / может / будет тыкать пальцем в небо + тратить лишнее время на догадки;
2) мы не знаем что такое myclass. Используй Pastebin для предоставления как можно большего количества подробностей про код, где произошла ошибка;
3) ты в перегруженном операторе « ожидаешь ссылку на объект. Объект у тебя возвращается из ф-ции по значению - ты получаешь ссылку на объект фиг знает где. Так делать нельзя.
Решение: либо помещай выхлоп ф-ции um в переменную и потом передавай в cout, либо используй передачу по значению в оператор «