gpt4 book ai didi

c++ - 如何在 gtest 中使用带有命名空间的 friend 类

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:34 25 4
gpt4 key购买 nike

假设我的 Add.h 位于命名空间内,并且我将它设为 AddTest 的友元,以便它可以访问 AddTwoNumber。

namespace mynamespace
{

class Add
{
friend class AddTest;

public:
Add(){};
~Add(){};

private:
int AddTwoNumber(const int a, const int b){return a+b};
};

}

我的 AddTest.h 是

#include "Add.h"
#include "gtest/gtest.h"

class AddTest : public ::testing::Test
{
protected:
AddTest(){};
virtual ~AddTest(){};

virtual void SetUp()
{
mynamespace::Add addobj;
result = addobj.AddTwoNumber(2, 3);
};

virtual void TearDown(){};

int result;
};

但是,它返回的错误是 AddTwoNumber 是私有(private)的。如果我在 Add.h 中删除“mynamespace”,代码就可以工作。有没有办法保留命名空间但仍然允许 AddTest 访问 Add.h 中的私有(private)方法?

最佳答案

将 AddTest 限定在全局命名空间中

friend class ::AddTest;

如果没有 ::,它会将 nynamespace::AddTest 声明为友元。

关于c++ - 如何在 gtest 中使用带有命名空间的 friend 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33976058/

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