Matthias Pleh Wrote: > Am 01.12.2010 16:51, schrieb vincent picaud: > > Is there a canonical way to take into account a new type for I/O using the > > std phobos library ? > > > > To be clear I do not know how to translate something like this (in C++) in > > D : > > > > #include<iostream> > > > > class A {}; > > > > std::ostream& operator<<(std::ostream& out,const A& a) > > { > > out<< "\nscreen output routine here\n"; > > return out; > > } > > > > int main() > > { > > A a; > > std::cout<< a; > > } > > > > Do I have to overload some writeln functions ? > > > > any help is welcome :) > > I would make it this way: > > module test; > > import std.stdio; > > class A{} > class B{ string toString() {return "screen output routine here";}} > > int main(string[] args) > { > A a=new A; > B b=new B; > writeln(a.toString()); > writeln(b.toString()); > return 0; > } > > output: > > test.A > > screen output routine here > > Base-class of all classes is object with have a default-toString() > method, which gives the module.classname. > So you can overwrite this method.
Thank you for your reply and yes that works :) Now i m facing with the following problem, what is the trick for input stream ? ( something like std::istream& operator>>(std::istream& in,A& a) { // A.someData << in; return in; } in C++ ) I m thinking of the situation when we want to load some data from a file. The toString() trick is okay for saving the object... but how to load it back (something like fromString(char[]) would do the job but it does not exist in Object) ? Anyway thank you, you solved half of my problem :)