1. ホーム
  2. c++

[解決済み] C++でインターフェイスを実装するには?重複

2022-03-03 12:13:56

質問

<ブロッククオート

重複の可能性があります。
C++でインターフェイスをシミュレートするための好ましい方法

Javaでは、デザインパターンの実装のほとんどをインターフェイスを介してクラスをデカップリングしているため、C++にインターフェイスがあるかどうか知りたかったのです。C++でも同じようなインターフェースの作り方があるのでしょうか?

どのように解決するのですか?

C++にはインターフェースの概念が組み込まれていません。を使って実装することができます。 抽象クラス のみを含む 純粋仮想関数 . 多重継承が可能なので、このクラスを継承して別のクラスを作り、その中にこのインターフェイス(つまり、オブジェクト・インターフェイス :) を含めることができます。

例としては、次のようなものです。

class Interface
{
public:
    Interface(){}
    virtual ~Interface(){}
    virtual void method1() = 0;    // "= 0" part makes this method pure virtual, and
                                   // also makes this class abstract.
    virtual void method2() = 0;
};

class Concrete : public Interface
{
private:
    int myMember;

public:
    Concrete(){}
    ~Concrete(){}
    void method1();
    void method2();
};

// Provide implementation for the first method
void Concrete::method1()
{
    // Your implementation
}

// Provide implementation for the second method
void Concrete::method2()
{
    // Your implementation
}

int main(void)
{
    Interface *f = new Concrete();

    f->method1();
    f->method2();

    delete f;

    return 0;
}