Рассмотрим следующий фрагмент:
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
в ObjectInterface
на стандартный тип вывода std::ostream& operator<<
? Я не могу заставить это работать.
РЕДАКТИРОВАТЬ: Я в основном пытаюсь выяснить, могу ли я заставить friend
работать с virtual
.