使用受保护的内部类作为其他类的基类

Using a protected inner class as a base class of other class

提问人:Vlad from Moscow 提问时间:9/16/2023 最后编辑:Jan SchultkeVlad from Moscow 更新时间:9/16/2023 访问量:46

问:

在 C++20 标准的“11.9 成员访问控制”一节中,提供了一个示例(p.#7,示例 #2),该示例使用类的受保护内部类作为派生类的基类以及与此类声明相关的相应文本。

这是我的简化版本的示例

class A {
//...
protected:
    struct B { };
};

struct D: A::B, A { };

并有书面

类似地,使用 A::B 作为基本说明符的格式是正确的,因为 D 是从 A 派生而来的,因此必须推迟对碱基说明符的检查 直到看到整个 base-specifier-list。

现在从提供的报价来看,目前尚不清楚是否应该编译这种结构声明D

struct D: A::B, A { };

否则编译器将发出基类不可访问的错误。例如,编译器报告错误。A::Bx86-64 clang (trunk)

C++ 继承 语言-律师 C++20 基类

评论


答: 暂无答案