同じクラスでインターフェースと実装 mixin の両方を継承することは可能ですか? このようなもの:
class Interface
{
public:
virtual void method()=0;
};
class Component
{
public:
void method(){ /*do something*/};
};
class MyClass : public Interface, public Component
{};
...
...
Interface* p = new MyClass(); p.method();
Interface から継承された純粋仮想関数は、Component の継承を通じて MyClass に実装されるという考えです。これはコンパイルされません。私はこれを行う必要があります:
class MyClass : public Interface, public Component
{
public:
void method(){Component::method();} override
};
おそらく何らかの方法でテンプレートを使用することにより、コンポーネントへの明示的なオーバーライドと委譲を回避することは可能ですか?