14

私は自分のコードでObjective-Cプロトコルを使用することに慣れています。彼らは多くのことで信じられないほどです。ただし、C ++では、同じことを実現する方法がわかりません。次に例を示します。

  1. 関数setDelegate(Protocol * delegate)を持つテーブルビュー
  2. クラスClassのデリゲートですが、プロトコル「プロトコル」を実装しています
  3. クラスClass2のデリゲート、「プロトコル」も実装
  4. setDelegate(objOfClass)とsetDelegate(objOfClass2)は両方とも有効です

Obj-Cでは、これは十分に単純ですが、C++でそれを行う方法を理解できません。それも可能ですか?

4

1 に答える 1

25

基本的に、「プロトコル」の代わりに、「純粋仮想関数を備えた基本クラス」を考えます。これは、他の言語ではインターフェースと呼ばれることもあります。

class Protocol
{
public:
    virtual void Foo() = 0;
};

class Class : public Protocol
{
public:
    void Foo() { }
};

class Class2 : public Protocol
{
public:
    void Foo() { }
};

class TableView
{
public:
    void setDelegate(Protocol* proto) { }
};
于 2010-06-28T07:02:51.497 に答える