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

时间:2014-08-05 09:10:35

标签: c++ friend

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;
}

1 个答案:

答案 0 :(得分:2)

friend指定可以访问私有成员的内容。在您的情况下,您想要访问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);
}