2

好吧,我对此感到非常疲惫。代码开始在屏幕上游来游去……必须睡觉。

所以!好吧,被嵌套类和朋友困扰。

这是伪代码

   class A{
     public:
          //constructor
          // member functions
     private:
          class B{
          //private
          int a();
          };

          class C{
          //private
          int b();
          };
   };

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

4

1 回答 1

2

如果您想在 class 和 class 中访问和a()访问,则需要将声明放在 class和 class中。但是,并且不是班级成员,因此您无法以您的想法访问它们。相反,您还需要将转发功能添加到.b()AfriendBCa()b()AA

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_;
};
于 2013-05-29T05:23:38.663 回答