Thursday, 15 May 2014

c++ - Understanding ostream overload -



c++ - Understanding ostream overload -

i'm having problem understanding error receive when overloading ostream method class.

code in class.cpp

ostream& operator<<(ostream& out, const datetype& d) { out << d.getyear() << "-" << d.getmonth() << "-" << d.getday() homecoming out; }

i know 3 getters work, test them in main.cpp.

however, when run like:

cout << d1 << endl:

i error:

‘std::ostream& datetype::operator<<(std::ostream&, datetype&)’ must take 1 argument ostream& operator<<(ostream&, datetype&);

i wrote ostream code programme works fine. why error here?

you wrote fellow member function of datetype, , fellow member operator<< may take 1 explicit argument (because first 1 implicit , operator binary). @ moment have sort of three-argument operator<<, taking implicit datetype, std::ostream&, datetype!

here's how fellow member operator<< look:

struct t { operator<<(ostream&); };

the problem have operator<< takes t on left , stream on right, reverse convention. t() << std::cout isn't right, it?

conventionally, then, utilize namespace-scope our operator<< overloads, have total command on parameter order.

that is, don't create fellow member function of datetype. may need create new function friend of datetype if getters private.

i wrote ostream code programme works fine.

no you/it didn't.

c++

No comments:

Post a Comment