我试图只使用基类的特定部分,而隐藏其他部分。考虑以下代码:
struct IX
{
// ...
};
struct IY
{
// ...
};
class Base :
public IX,
public IY
{
// Implements IX and IY.
// ...
};
// Reuse IX implementation, but don't expose IY.
//
class X : protected Base
{
public:
using Base::IX; // <-- Doesn't exist in C++.
};
我可以享受由IX
提供的实现Base
,但不暴露IY
接口吗?
当然,我可以输入using Base::IX::xxx
所有存在于IX
. 或者,我可以像这样将所有调用转发到实现:
//
class X : public IX
{
public:
// Forward all calls to IX methods to m_p.
// ...
protected:
Base* m_p;
};
但同样,我必须键入所有可用的方法IX
才能转发它们。而且每次IX
更改,我都必须更新X
.
谢谢。
亚历克斯