Вопрос C ++: функция, аналогичная протоколам Obj-C? - PullRequest
10 голосов
/ 28 июня 2010

Я привык использовать протоколы Objective-C в моем коде;они невероятны для многих вещей.Тем не менее, в C ++ я не уверен, как сделать то же самое.Вот пример:

  1. Табличное представление, которое имеет функцию setDelegate (Protocol * Delegate)
  2. Делегат класса Class, но реализующий протокол 'Protocol'
  3. Делегат класса Class2, также реализующий 'Protocol'
  4. setDelegate (objOfClass) и setDelegate (objOfClass2), оба действительны

В Obj-C это достаточно просто, но я могу 'не могу понять, как это сделать в C ++.Это вообще возможно?

1 Ответ

22 голосов
/ 28 июня 2010

По сути, вместо «Протокол» следует думать «базовый класс с чисто виртуальными функциями», иногда называемый интерфейсом в других языках.

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) { }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...