如何使用友类对象访问私有成员函数

How to access private member function using friend class object?

本文关键字:成员 函数 访问 对象 何使用      更新时间:2023-10-16

main中,我想访问display函数。这里,在class B中,我宣布class A为朋友。所以我认为可以访问私有成员函数。但是我不知道怎么做。

#include<stdio.h>
class A
{ 
  public:
  class B
  {
    public:
     friend class A;
    private:
     void display()
     {
       printf("nHi");
     }
  };
};
int main()
{
  //here i wanna access display function.. is it possible?
  return 1;
}

friend指定对private成员有访问权限的对象。在您的示例中,您希望访问main函数中的私有成员,因此您应该指定它为友元:

class A
{ 
    public:
    class B
    {
       friend int main();
       void display()
       {
           printf("nHi");
       }
    };
};
int main()
{
    // here you can access display function:
    A::B object;
    object.display();
}

或者,如果您想让class A(而不是其他任何东西)成为朋友,那么class A应该访问display函数。class A的任何成员都可以这样做:

class A
{ 
    public:
    class B
    {
       friend class A;
       void display()
       {
           printf("nHi");
       }
    };
    // here you can access display function:
    void access_display(B object)
    {
        object.display();
    }
};
int main()
{
    A object1;
    A::B object2;
    object1.access_display(object2);
}