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

时间:2014-10-12 02:52:00

标签: c++ pointers friend

这是两个班级

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

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

 A objA;
 B objB(&objA)

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

1 个答案:

答案 0 :(得分:0)

如果您希望在类型B的对象上创建A类型的对象,反之亦然,您可以使用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