Вопрос на С++: функция похожа на протоколы Obj-C?
Я использую протоколы Objective-C в моем коде; они невероятны для многих вещей. Однако в С++ я не уверен, как выполнить одно и то же. Вот пример:
- Вид таблицы, в котором есть функция setDelegate (делегат протокола *)
- Делегирование класса Class, но реализация протокола "Протокол"
- Делегат класса Class2, также реализующий "Протокол"
- setDelegate (objOfClass) и setDelegate (objOfClass2) являются действительными
В Obj-C это достаточно просто, но я не могу понять, как это сделать на С++. Возможно ли это?
Ответы
Ответ 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) { }
};