Вопрос о C++: функция, подобная протоколам Obj-C?

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

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

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

12
задан Justin Mrkva 28 June 2010 в 06:58
поделиться

1 ответ

В принципе, вместо "протокола" думайте о "базовом классе с чистыми виртуальными функциями", который в других языках иногда называют интерфейсом.

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) { }
};
24
ответ дан 2 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: