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<<
」型にObjectInterface
でPrint
を変更する方法はありますか?私はそれを働かせることはできません。
編集:私は基本的にfriend
をvirtual
と動作させることができるかどうかを判断しようとしています。それはひどく簡単です、
ostream & operator << (ostream & os, const ObjectInterface & oi) {
oi.Print(os);
return os;
}
神: –
あまりにも悪くはありません。それを考えていたベル研究所の最初の男(おそらく)はおそらく自分自身にはとても満足していたでしょう。 –