c++ - 如何枚举我类的 friend

标签 c++ oop enums encapsulation friend

我有以下两个类:

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

class B{
 /*


 */

};

现在我想在 B 类中使用 enum ee 如何与 A 类中的 enum ee 成为 friend ?\

最佳答案

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

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

这在其他选项之上引入了限制,以便在您希望/需要更具体的 wrt 访问时使用。

具体来说,A 不需要使用这种方法与 B 成为 friend ,并且 A::inner 中的声明被限制为你指定了。 A::inner 然后可以将其声明保密,并允许通过友元访问。客户端可以声明一个 inner(通过 A::exposed 访问),但如果枚举类型和常量是私有(private)的,它对客户端没有实际用途。

关于c++ - 如何枚举我类的 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11878633/

相关文章:

c++ - 在不知道矩阵名称的情况下读取 OpenCV 中的 YML

oop - 如何在 Go 中实现一个抽象类?

java - 抽象方法与仅子类方法

java - 使用枚举作为 map 的键

c++ - 没有 try_key 的灰色图像

C++11: "= {}"的类内初始化不适用于显式构造函数

c# - 如何使用 LinqToSql 将字符串值隐式转换为枚举?

python - 如何根据 Fastapi Pydantic 模型中的特定 Enum 成员进行验证

c++ - Bullet Physics 最简单的碰撞示例

java - 哪种设计模式适合这种情况?