我正在寻找一种“干净”的方法来访问测试上下文中的一些私有成员变量,而不触及原始代码。我正在考虑用测试类实现一个友谊关系,但出于某种原因,我不理解它仍然需要一个保护的访问器才能工作。为什么是那样的?是否有其他方式访问私有成员变量?
class A
{
protected: // this works
// private: // this DOES not work
int a;
};
class TestableA : public A
{
friend class TestA;
};
class TestA
{
void test()
{
m_a.a = 100;
}
TestableA m_a;
};发布于 2016-07-21 09:56:04
不能从派生类访问私有变量,只能访问保护。
TestA是TestableA的朋友,所以它可以看到TestableA包含的所有内容。但是如果a是私有的,则不能在TestableA中访问它。
你有几种选择:
A中。您甚至可以使用宏执行此操作,而宏只会影响调试/测试生成。有关此主题的更多信息,有一个名为服务于测试的友谊的很好的演示文稿
https://stackoverflow.com/questions/38500865
复制相似问题