sstream redeclared with public access compiler error

场景

在gtest测试中,由于要测试非public成员,于是重新定义了“private”关键字,如下

#define private public

结果编译时遇到下面的问题:
在这里插入图片描述

剖析

这种宏定义的方式,改变了private的作用范围,会导致其他头文件中的private被重定义。具体可参考stackoverflow上的解释(sstream-redeclared-with-public-access-compiler-error)

解决方法

1.使用#undef在包含系统头文件之前的私有定义并在包含这些头文件后再次定义,或者
2.使用另一个宏来定义自己的私有/公共部分,例如:#define my_public public可以随意重新定义。(这个解决方案似乎很恶心)
for the future in your own code always use explicit access qualification to avoid this sort of mess at least with your own code(为了将来在您自己的代码中始终使用显式访问限定来避免这种混乱,至少在你自己的代码中是这样的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值