gpt4 book ai didi

c++ - 有没有办法让我在 C++ 中通配一个 friend 类?

转载 作者:行者123 更新时间:2023-12-01 14:51:33 25 4
gpt4 key购买 nike

我正在使用 gtest 对 cpp 类进行单元测试。考虑一种情况,我想让测试类成为实际类的 friend ,这样它就可以对其私有(private)状态进行单元测试。这对我来说很好。问题是在使用非常有用的 TEST_P 时允许您参数化测试实例化的宏,框架会稍微修改测试名称。
所以我有类似的东西

class FooTester {
FooTester() {}
}

TEST_P(FooTester, TestCoolFeature) {
// test my cool feature that needs access to Foo's internal state
}
这很好,但为了允许这样做,我必须提供
class Foo {
friend class FooTester_TestCoolFeature;
}
我们可以通过宏魔术看到 gtest 创建了一个我没有明确声明的新类,它是测试类和测试方法名称的组合。
这表面上很好,但有点难看。这将要求我为每个需要此访问权限的新测试方法添加一个新 friend 类。唯一真正的(如果不太可能的话)问题是,如果 gtest 要更改其实现并以不同的方式修改类名,它可能会破坏我的测试。
有没有办法使用一些 #define魔术或类似声明所有 FooTester*类为 friend年代?

最佳答案

不要使用 friend为此上课。如果您想访问 Foo来自 FooTester , 公开继承:

class FooTester : public Foo
{
FooTester() {}
}

关于c++ - 有没有办法让我在 C++ 中通配一个 friend 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63478512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com