使用指针访问友元类成员函数

Using pointers to access friend class member functions

本文关键字:成员 函数 友元 访问 指针      更新时间:2023-10-16

这里有两个类

  class A{
    A(int val):Val(val){}
    int getVal(){return Val;}
    friend class B;
    private:
    int Val;
  }

 class B{
    B(A* ptr):PTR(ptr){}
    private:
    A* PTR;
  }

在主函数中,我为两个类创建对象

 A objA;
 B objB(&objA)

正如您所看到的,objB现在包含一个指向objA地址的指针。我面临的问题是如何使用objB中的指针访问objA中的成员函数。

如果您希望使类型A的对象指向类型B的对象,反之亦然,您可以使用setter,而不是通过构造函数参数传递实例,例如:

  class A{
        A(int val):Val(val){}
        int getVal(){return Val;)
        void setB(B* ptr) {BPtr= ptr;}
        friend class B;
        private:
        int Val;
        B* BPtr
  }

 class B{
        B(A* ptr):PTR(ptr){}
        private:
        A* PTR;
  }

现在,当你创建A和B对象时,你可以这样做:

 A objA;
 B objB(&objA);
 A.setB(&objB);

编辑:

好的,我一开始误解了你的问题。如果您只是想访问类型a对象的成员,您只需要执行objA->field(*objA).field