c++ - 朋友功能随机行为
问题描述
#include<iostream>
class FooA
{
private :
friend class FooB;
void Hello();
void Hello2();
private:
void Hello3();
int m_iData;
};
class FooB
{
void fun()
{
FooA objA;
objA.Hello(); // right
objA.Hello2(); // right
objA.Hello3(); // right
//ojbA.m_iData = 0; // compile error
}
};
通常如果我们访问对象私有的数据成员函数或成员变量直接抛出错误。
但在这种情况下,它如何能够访问 Hello()、Hello2()、Hello3() 函数以及为什么它在访问 m_iData 时会抛出错误。
解决方案
b 和 j inobjA
已交换形成未知标识符ojbA
。
更改ojbA.m_iData = 0;
为objA.m_iData = 0;
推荐阅读
- vba - 为什么错误处理程序触发时没有错误?
- docker - 如何使用 ENTRYPOINT 或 CMD 从 docker 进程捕获标准输出并通过管道传输到另一个进程
- javascript - 如何检查字符串中是否存在不区分大小写的子字符串?
- django - Django:安全删除旧迁移?
- java - 使用 JavaFX 获取当前记录的用户 ID 和用户名
- javascript - 节点 JS 不允许将 JSON 返回到 JSON 字符串中
- java - 未找到 com.google.protobuf.GeneratedMessageV3 的类文件
- python-3.x - pydub 没有找到 ffprobe
- git - How to tell the date time that a git branch is pushed to remote?
- javascript - DayJS 格式秒分钟和小时