gpt4 book ai didi

c++ - 在测试中使用友元

转载 作者:行者123 更新时间:2023-11-30 02:30:33 37 4
gpt4 key购买 nike

我正在寻找一种“干净”的方式来访问测试上下文中的一些私有(private)成员变量,而无需触及原始代码。我正在考虑与测试类实现友元关系,但出于某种原因我不明白它仍然需要一个protected访问器才能工作。为什么会这样?有没有其他方法可以访问私有(private)成员变量?

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;
};

最佳答案

您不能从派生类访问私有(private)变量,只能访问 protected 变量。

TestATestableA 的友元,因此它可以看到TestableA 包含的所有内容。但是如果 a 是私有(private)的,你就不能在 TestableA 中访问它。

您有多种选择:

  • 到处使用 protected
  • 直接将友元声明添加到类A。您甚至可以使用仅影响调试/测试构建的宏来完成。

有关此主题的更多信息,有一个很好的演示文稿,名为 Friendship in Service of Testing

关于c++ - 在测试中使用友元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38500865/

37 4 0
文章推荐: java - 使用 apache common Email 使用 "on behalf of"发送电子邮件
文章推荐: android - 每天触发一次以上的通知
文章推荐: java - 如何使用Java将某个文件夹下的所有文件名添加到数组列表中
文章推荐: java - 为什么不能执行 Set = new TreeSet