Funções de amigos virtuais para uma classe base?
Eu estou no processo de aprender a língua e esta é uma dúvida noob.
É possível usar uma função de amigo virtual? Não sei se é possível, nem testei, mas poderia ser útil em algumas situações. Por exemplo, para o operador sobrecarregado << ().
DerivedClass dc;
BaseClass &rbc = dc;
cout << rbc;
Meu palpite é que é possível, mas não tenho certeza, pois uma função de amigo não é implementada no design de classes e, teoricamente, não faz parte dela (embora neste exemplo, conceitualmente, faz sentido que o operador << () seja um método, mas devido a limitações de sintaxe, não é possível implementá-lo como um).
EDIT: minha preocupação está relacionada com este exemplo:
BaseClass bc;
DerivedClass dc;
BaseClass *pArr[2];
pArr[1] = bc;
pArr[2] = dc;
for (int i = 0; i < 2; i++)
cout << pArr[i];
neste array de objetos mistos, quero o operador correto << () chamado para cada um.