judge
April 14th, 2005, 11:06 PM
I have written I/O operations for pointers to objects of class Foo.
typedef Foo *FooPtr;
std::istream &operator>>(std::istream &is, FooPtr &foo_ptr)
{
bool is_null;
if (!(is >> is_null))
return is;
if (is_null)
{
foo_ptr = 0;
return is;
}
foo_ptr = new Foo();
return is >> *foo_ptr;
}
std::ostream &operator<<(std::istream &os, FooPtr foo_ptr)
{
return os << (foo_ptr != 0) << " " << (foo_ptr ? *foo_ptr : "");
}
How do I improve these functions so that two equal pointers written to a stream can be later read as two equal pointers?
typedef Foo *FooPtr;
std::istream &operator>>(std::istream &is, FooPtr &foo_ptr)
{
bool is_null;
if (!(is >> is_null))
return is;
if (is_null)
{
foo_ptr = 0;
return is;
}
foo_ptr = new Foo();
return is >> *foo_ptr;
}
std::ostream &operator<<(std::istream &os, FooPtr foo_ptr)
{
return os << (foo_ptr != 0) << " " << (foo_ptr ? *foo_ptr : "");
}
How do I improve these functions so that two equal pointers written to a stream can be later read as two equal pointers?