首页 > 解决方案 > 朋友功能随机行为

问题描述

#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 时会抛出错误。

标签: c++

解决方案


b 和 j inobjA已交换形成未知标识符ojbA

更改ojbA.m_iData = 0;objA.m_iData = 0;


推荐阅读