Acessando funções membro protegidas do código de teste em C ++

Eu estive quebrando meu cérebro tentando pensar na melhor maneira de acessar uma função de membro protegida de algum código de teste em C ++, aqui está o meu problema:

//in Foo.h 
Class Foo
{
protected:
    void DoSomething(Data data);
}

//in Blah.h
Class Blah
{
public:
    Foo foo;
    Data data; 
};

//in test code...
Blah blah;
blah.foo.DoSomething(blah.data); // Here's my problem!

Algumas soluções possíveis até agora:

Faça da classe de código de teste um amigo de Foo, mas isso polui Foo com código de testeFaça DoSomething uma função públicaEu olhei para criar um wrapper de teste para Foo, como sugerido emesta postagem, no entanto, isso não funcionará como Blah contém a instância de Foo.

Todos os conselhos / insights / opiniões são muito bem vindos!

obrigado

questionAnswers(8)

yourAnswerToTheQuestion