Reputation: 13456
why does
void operator<<(ostream out, Test &t);
return an error whereas
void operator<<(ostream &out, Test &t);
does not ?
Upvotes: 0
Views: 150
Reputation: 224069
Because you cannot copy streams, you have to pass them per reference.
Note that the canonical form of operator<<
is this:
std::ostream& operator<<(std::ostream& out, const Test &t)
{
// write t into out
return out;
}
returning the stream is important so that you can string output together:
std::cout << Test() << '\n';
Upvotes: 10