Zugriff auf geschützte Memberfunktionen über Testcode in C ++

Ich habe mir den Kopf zerbrochen, um herauszufinden, wie ich mit einem Testcode in C ++ am besten auf eine geschützte Member-Funktion zugreifen kann. Hier ist mein Problem:

//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!

Einige mögliche Lösungen:

Machen Sie die Testcode-Klasse zu einem Freund von Foo, aber dies verschmutzt Foo mit TestcodeMach DoSomething zu einer öffentlichen FunktionIch habe mir überlegt, einen Test-Wrapper für Foo zu erstellen, wie in empfohlendieser BeitragDies wird jedoch nicht funktionieren, da Blah die Instanz von Foo enthält.

Alle Ratschläge / Einblicke / Meinungen sind herzlich willkommen!

Vielen Dank

Antworten auf die Frage(8)

Ihre Antwort auf die Frage