У меня есть модульный тестовый класс Tester
; Я хочу, чтобы он имел доступ к закрытым полям класса Working
.
class Working {
// ...
private:
int m_variable;
};
class Tester {
void testVariable() {
Working w;
test( w.m_variable );
}
}
У меня есть следующие варианты:
общедоступным
- уродливым test_getVariable ()
- чрезмерно сложным тестировщик классов друзей
на «Работает» - тогда рабочий «знает» о тестере явно, что нехорошо Мой идеальный вариант -
class Working {
// ...
private:
int m_variable;
friend class TestBase;
};
class TestBase {};
class Tester : public TestBase {
void testVariable() {
Working w;
test( w.m_variable );
}
}
, где рабочий знает о TestBase, но не о каждом тесте ... но он не работает.Видно дружба не работает с наследством.
Какое решение здесь было бы наиболее элегантным?