如何在我的课堂上吸引朋友

时间:2012-08-09 07:28:50

标签: c++ oop enums encapsulation friend

我有以下两个类:

class A{
enum ee{a = 1, b = 2 , c = 3};
};

class B{
 /*


 */

};

现在我想在B级使用enum ee如何在A类中与朋友联系?\

3 个答案:

答案 0 :(得分:3)

您可以使用此方法更有选择性地限制访问:

class B;

class A {
    class inner {
        enum ee {a = 1, b = 2 , c = 3};
        friend class B;
    };
public:
    typedef inner exposed;
};

class B {
    void f() {
        const A::exposed::ee e(A::exposed::a);
    }
};

这引入了超出其他选项的限制,适用于您希望/需要更具体访问的时间。

具体而言,A使用此方法不需要与B成为朋友,并且A::inner中的声明会受到您指定的限制。然后A::inner可以将其声明保密,并允许通过友谊访问。客户端可以声明inner(通过A::exposed访问),但如果枚举类型和常量是私有的,它对客户端没有用处。

答案 1 :(得分:1)

如果您将枚举放在A的公开部分中,则可以将其称为A::ee,将值称为A::aA::b和{{ 1}}

A::c.

答案 2 :(得分:1)

你不能'朋友'枚举,因为枚举成员在其范围内是公开的。 “朋友”涉及使私人成员公开。因此,在这种情况下,您需要与class A成为朋友。

换句话说:

class A {
    enum ee {a = 1, b = 2, c = 3};

    friend class B;
};

将从enum A::ee访问私人class B

然后,例如:

class B {
    void somefunc() {
        enum A::ee v = A::a;
    }
}