ostreamから派生したクラスがあります。
class my_ostream: public std::ostream
{
// ...
}
do_something
次のように、このクラスに固有に機能するマニピュレータ(たとえば)を作成したいと思います。
my_ostream s;
s << "some text" << do_something << "some more text";
私は次のことをしました:
std::ostream &do_something(std::ostream &os)
{
my_ostream *s = dynamic_cast<my_ostream*>(&os);
if (s != NULL)
{
// do something
}
return os;
}
これは機能しますが、かなり醜いです。私は次のことを試しました:
my_ostream &do_something(my_ostream &s)
{
// do something
return s;
}
これは機能しません。また、別のアプローチを試しました。
class my_ostream: public std::ostream
{
// ...
my_ostream &operator<<(const do_something & x)
{
// do something
return *this;
}
}
これはまだ機能しません。