да это возможно, но вы допустили ошибку в списке параметров оператора, есть два параметра не один, один для ostream, который компилятор автоматически распознает его и здесь он должен быть ostream , второй будет типом класса, который вы будете использовать после cout < < classType здесь сложный, кстати посмотрите на это cout<<Complex
cout - это первый параметр, поэтому вы должны использовать этот код, он будет работать.
#include <ostream>
using std::ostream;
class Complex
{
public:
friend ostream &operator <<(ostream &out, Complex &cmplx)
{
out << cmplx.im << "\t" << cmplx.re;
return out;
}
private:
double re, im;
};
int main()
{
Complex complex;
cout<<complex;
return 0;
}
будет выводить значение re
и im
.
'operator <<' - это двоичный оператор, и вы попытались объявить его только одним операндом. При перегрузке вы не можете изменить arity операторов C++. Вы должны объявить его корректно как двоичный оператор, например: 'friend ostream operator << (ostream & out, const complex & what_to_output);' –
Ваш заголовок говорит «без перегрузки». Любое объявление 'operator <<' перегружает. –