编译器认为您正在尝试引用C的父级父类型.A完全指定类型以避免这种歧义.使用::表示全局命名空间.
A
::
class C : private B { public: class D : public ::A // Add this ^^ { }; };
这是Injected类名称的情况.
对于在该类或模板的定义中使用的类或类模板的名称,或者从一个类或模板派生的类名称,非限定名称查找将查找被定义的类,就好像该名称是由成员声明引入的(具有公共成员访问权限)