我有以下两个类:
class A{
enum ee{a = 1, b = 2 , c = 3};
};
class B{
/*
*/
};
现在我想在B级使用enum ee如何在A类中与朋友联系?\
答案 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::a
,A::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;
}
}