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