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

时间:2010-06-28 06:58:52

标签: c++ objective-c protocols delegation

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

  1. 表视图,具有函数setDelegate(Protocol * delegate)
  2. 类Class的委托,但实现协议'Protocol'
  3. Class2的代表,也实现'Protocol'
  4. setDelegate(objOfClass)和setDelegate(objOfClass2)都有效
  5. 在Obj-C中这很简单,但我无法弄清楚如何在C ++中实现它。它甚至可能吗?

1 个答案:

答案 0 :(得分:22)

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

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) { }
};
相关问题