1

同じクラスでインターフェースと実装 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
 };

おそらく何らかの方法でテンプレートを使用することにより、コンポーネントへの明示的なオーバーライドと委譲を回避することは可能ですか?

4

1 に答える 1