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 回答