C++ 如何跳过具有函数公共访问权限的类?
我有以下设置:C++ 如何跳过具有函数公共访问权限的类?,c++,C++,我有以下设置: class A { public: virtual void Function(); } class B : private A { } class C : public B { public: // I want to expose A::Function() here } 我试图通过添加以下内容来实现此目的: class C : public B { public: virtual void Function(); } 及 但我得到了“无法访问的基础”错
class A
{
public:
virtual void Function();
}
class B : private A
{
}
class C : public B
{
public:
// I want to expose A::Function() here
}
我试图通过添加以下内容来实现此目的:
class C : public B
{
public:
virtual void Function();
}
及
但我得到了“无法访问的基础”错误
可以这样做吗?如果您可以将其更改为
B类:受保护的A
,它应该可以工作。如果您可以将其更改为B类:受保护的A
,它应该可以工作。您不能这样做。B
继承自A
这一事实是一个实现细节,您不能从C
访问它,就像您不能访问B
的私有函数或成员变量一样
如果
B
从A继承受保护的或公共的,这将是完全合法的。您不能这样做。B
继承自A
这一事实是一个实现细节,您不能从C
访问它,就像您不能访问B
的私有函数或成员变量一样
如果B
继承了受保护的
或公共的
,那么这将是完全合法的。事实并非如此。您所描述的场景将表明您的类层次结构需要重新构建。实际上并非如此。您正在描述的场景将表明您的类层次结构需要重新构建。在B
中,您可以将A::Function
的可访问性更改为protected
:
class B : private A
{
protected:
using A::Function;
};
在C::Function
(以及C
中的其他地方)中,您必须将函数称为B::Function
,而不是A::Function
。您还可以public:使用B::Function在C
中,您可以将a::Function
的可访问性更改为protected
,而不是实现只调用B::Function
的C::Function
class B : private A
{
protected:
using A::Function;
};
在C::Function
(以及C
中的其他地方)中,您必须将函数称为B::Function
,而不是A::Function
。您还可以public:使用B::Function代码>在C
中,而不是实现一个只调用B::Function
的C::Function