sobrecarregando '<<' com herança e polimorfismo?

A seguir está uma amostra aproximada de como o código se parece, a questão é como posso ter o DerivedOne e o DerivedTwo com um operador << sobrecarregado, mas armazenando esses objetos em um vetor de Base *.

Quanto ao que quero alcançar; Eu quero ser capaz de percorrer o vetor de objetos e gerar as informações para as quais eu digo no DerivedOne e DerivedTwo.

vector<Base*> objects;

class Base
{
 private:
 object Data
 public:
 object getData() { return Data; }
};

class DerivedOne : public Base
{
}

class DerivedTwo : public Base
{
}

Agora eu sei que existe isso, mas não vai funcionar para os meus propósitos.

friend ostream &operator<<(ostream &stream, Object object)
{
    return stream << "Test" << endl;
}

questionAnswers(3)

yourAnswerToTheQuestion