如何将私有父类用作内部类的父类?
我试着这样做:
class A
{
};
class B : private A
{
};
class C : private B
{
public:
class D : public A
{
};
};
int main()
{
C c;
}
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误.有没有办法解决它,或者我需要将私有更改为受保护?
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.
Run Code Online (Sandbox Code Playgroud)
编译器认为您正在尝试引用C的父级父类型.A完全指定类型以避免这种歧义.使用::表示全局命名空间.
class C : private B
{
public:
class D : public ::A
// Add this ^^
{
};
};
Run Code Online (Sandbox Code Playgroud)
对于在该类或模板的定义中使用的类或类模板的名称,或者从一个类或模板派生的类名称,非限定名称查找将查找被定义的类,就好像该名称是由成员声明引入的(具有公共成员访问权限)
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |