vincent picaud wrote:
> Matthias Pleh Wrote:
>> class A
>> {
[...]
>>      string toString()   { return someData;  }

> I have the feeling that the C++ way is more convenient.
>
> Look in C++ , to define I/O for A, you do not have to modify
> your class A and simply have to overload two functions:
>
> std::ostream& operator<<(std::ostream& out,const A& a)
> std::istream&  operator>>(std::istream&  in,A&  a)

Yes but those two functions are actually logical parts of the class's interface. Besides, in many cases a 'friend' declaration is needed.

Tangentially, operator>> is overrated because it requires a complete object to work on. I find it exremely rare to input on top of an existing object, which would also require a default constructor; and being forced to write a default constructor is unpractical in some cases.

Reading from a stream should have been designed to return a constructed object:

    auto a = readFrom!A(some_input);

or as a static member function:

    auto a = A.readFrom(some_input);

Ali

Reply via email to