2009-04-11 8 views
2

は、次のコードを考えてみましょう:ABC仮想ostreamに挿入演算子

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"; 
    } 
}; 

は、出力の標準「std::ostream& operator<<」型にObjectInterfacePrintを変更する方法はありますか?私はそれを働かせることはできません。

編集:私は基本的にfriendvirtualと動作させることができるかどうかを判断しようとしています。それはひどく簡単です、

ostream & operator << (ostream & os, const ObjectInterface & oi) { 
    oi.Print(os); 
    return os; 
} 

答えて

6

あなたが自由に機能を必要としています。私はそれについて考えなかったと信じられない...ありがとう。
+0

神: –

+0

あまりにも悪くはありません。それを考えていたベル研究所の最初の男(おそらく)はおそらく自分自身にはとても満足していたでしょう。 –

関連する問題