具体的なクラスからメソッドを明示的に呼び出すことなく、具体的なクラスによって提供される実装を使用して、インターフェイスから純粋仮想メソッドを実装したいと考えています。例:
class InterfaceA{
public:
virtual void foo() = 0;
};
class InterfaceB:public InterfaceA{
public:
virtual void bar() = 0;
};
class ConcreteA : public InterfaceA{
public:
virtual void foo(){}//implements foo() from interface
};
class ConcreteAB: public InterfaceB, public ConcreteA{
public:
virtual void bar(){}//implements bar() from interface
};
このシナリオでは、コンパイラはクラス ConcreteAB での foo() の実装を要求します。これは、InterfaceB には実装されておらず、InterfaceA から継承されているためです。
ConcreteA::foo() を呼び出すラッパーを使用せずに、ConcreteA の実装を使用するようにコンパイラに指示する方法はありますか?