2

次のスニペットを検討してください。

struct ObjectInterface
{
    virtual ~ObjectInterface() {}
    virtual void Print(std::ostream& target) const = 0;
};

struct Foo : ObjectInterface
{
    virtual void Print(std::ostream& target) const
    {
        target << "Foo";
    }
};

struct Bar : ObjectInterface
{
    virtual void Print(std::ostream& target) const
    {
        target << "Bar";
    }
};

標準的な " " タイプの出力に変更する方法はありPrintますか? 私はそれを機能させることはできません。ObjectInterfacestd::ostream& operator<<

編集:私は基本的に、私friendvirtual.

4

1 に答える 1

6

無料の関数が必要です:

ostream & operator << ( ostream & os, const ObjectInterface & oi ) {
    oi.Print( os );
    return os;
}
于 2009-04-11T20:14:08.817 に答える