如何将私有父类用作内部类的父类
How can I use a private parent class as a parent of an internal class?
如何使用私有父类作为内部类的父类?
我正在尝试这样做:
class A
{
};
class B : private A
{
};
class C : private B
{
public:
class D : public A
{
};
};
int main()
{
C c;
}
但是我收到以下错误。有什么方法可以解决它,还是我需要将私有更改为受保护?
test.cpp:14:20: error: 'A' is a private member of 'A'
class D : public A
^
test.cpp:6:11: note: constrained by private inheritance here
class B : private A
^~~~~~~~~
test.cpp: 1: 7: note: member is declared here
class A
^
1 error generated.
编译器认为您正在尝试引用 C 的父级的父级类型。完全指定A
的类型以避免这种歧义。使用 ::
表示全局命名空间。
class C : private B
{
public:
class D : public ::A
// Add this ^^
{
};
};
这是注入类名的情况。
对于在该类或模板的定义中使用的类或类模板派生自某个类或模板的名称,非限定名称查找查找正在定义的类,就好像该名称是由成员声明引入的(具有公共成员访问权限)
相关文章:
- 如何声明由多个线程调用的 C++ DLL 的内部类,而无需导出类
- 如何将枚举类转发声明为模板化类的内部类?
- 从内部类中的方法从包含类调用方法
- 从模板化父类中的派生内部类访问受保护的成员变量
- C++模板类的内部类访问
- 使用类模板的内部类模板专用化模板
- 如何使用包含内部类的类实例有效地从内部类访问成员?
- 在C++中将内部类实现为具有名称空间的独立类有什么好处
- 参数化类的别名(或类型定义)内部类
- 如何在没有setter的情况下设置类内部类的成员变量?
- 在它所属的模板类中使用内部类
- 嵌套类:具有外部类成员的内部类
- 如何在外部类中使用类模板时定义内部类构造函数
- 嵌套类的类内好友是否可以访问外部类成员?
- 类模板的内部类的类似元组的结构化绑定
- 如何将私有父类用作内部类的父类
- 为什么内部类*定义*不能使用其父类?
- 当父类和内部类具有相同名称时,名称解析错误
- 派生类是否可以访问作为内部类的好友的父类的受保护内部类的私有方法
- 如何在不把内部类的定义放入父类的情况下创建一个内部类