<< 演算子が正しく呼び出されないという小さな問題があります。
これは私が持っているものです:
class SomeInterface
{
friend std::ostream& operator<<(std::ostream& str, const SomeInterface& data);
protected:
virtual void print(ostream& str) const = 0;
};
inline std::ostream& operator<< (std::ostream& o, SomeInterface const& b)
{
b.print(o);
return o;
}
}
呼び出しコードは次のようになります。
SomeInterface* one = new someConcrete ();
cout << one;
インターフェイスで呼び出されることを望んでいた << オーバーロードされた関数は、派生クラスへのディスパッチは言うまでもなく、そうではありません。