他の部分を隠しながら、基本クラスの特定の部分のみを使用しようとしています。次のコードを検討してください。
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。
ありがとう。
アレックス