C++问题:类似于Obj-C协议的功能?

Jus*_*kva 12 c++ protocols delegation objective-c

我习惯在我的代码中使用Objective-C协议; 他们对很多事情都很不可思议.但是,在C++中,我不确定如何完成同样的事情.这是一个例子:

  1. 表视图,具有函数setDelegate(Protocol*delegate)
  2. 类Class的委托,但实现协议'Protocol'
  3. 类Class2的代表,也实现'协议'
  4. setDelegate(objOfClass)和setDelegate(objOfClass2)都有效

在Obj-C中,这很简单,但我无法弄清楚如何在C++中实现它.它甚至可能吗?

Ter*_*fey 24

基本上,代替"协议"认为"具有纯虚函数的基类",有时称为其他语言的接口.

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) { }
};
Run Code Online (Sandbox Code Playgroud)