c++ - 好友会员功能无法访问私人会员数据
问题描述
我尝试使用朋友函数访问 X 类的私有成员数据,该函数本身是 A 类的成员函数。
代码如下:
class X {
int foo;
public:
friend void A::func(X x1);
};
class A {
public:
void func(X x1) { x1.foo = 999; }
};
这不会编译,原因是:
Error C2248 'X::foo': cannot access private member declared in class 'X'
我尝试更改顺序,在 X 之前声明 A,但它没有帮助..
是什么原因造成的?
解决方案
您必须正确拆分声明和定义,因为您有循环依赖:
class X;
class A {
public:
void func(X x1);
};
class X {
int foo;
public:
friend void A::func(X x1);
};
void A::func(X x1) { x1.foo = 999; }
推荐阅读
- git - 通过推入和拉出裸仓库来检索覆盖的文件
- javascript - 以 MM/YY 格式输入日期
- javascript - 将 PHP 脚本添加到页脚时,JavaScript 计时器卡住
- cmake - 如何根据构建的目标限制 cmake 命令
- filter - 如何将 ffmpeg 与 gltransition 集成?
- python - 无法在字符串上的 python 上执行 Mysql 查询,因为反引号/严重导致冲突
- css - 有没有办法取消在媒体查询中设置为某个元素的所有样式属性,而无需再次覆盖它们?
- python - 如何将多个值附加到 numPy 数组?
- excel - Excel-VBA:将文件夹资源管理器添加到工作表
- c# - ASP.NET Core 文件上传表单绑定问题