好友和嵌套类

Friends and nested classes

本文关键字:嵌套 好友      更新时间:2023-10-16

好吧,我完全累坏了。代码开始在屏幕上游弋……一定要好好睡一觉。

如此!好吧,被嵌套类和好友困扰。

下面是伪代码
   class A{
     public:
          //constructor
          // member functions
     private:
          class B{
          //private
          int a();
          };
          class C{
          //private
          int b();
          };
   };

因此,一旦创建了A类型的对象,我希望它访问A()和b()。我知道我必须使用好友功能。那么我应该把class a放在哪里呢?这个表达式对吗?

如果您想从类A中访问a()b(),则需要将friend声明放在类B和类C中。然而,a()b()不是A类的成员,所以你不能以你所想的方式访问它们。相反,您还需要将转发功能添加到A

class A
{
public:
    //constructor
    // member functions
private:
    class B
    {
        //private
        int a();
        friend A;    // <-- make A a friend
    };
    class C
    {
        //private
        int b();
        friend A;    // <-- make A a friend
    };
public:
    // forwarding function for a
    int a()
    {
        return bdata_.a();
    }
    // forwarding function for b
    int b()
    {
        return cdata_.b();
    }
private:
    B bdata_;
    C cdata_;
};