У меня есть библиотека переносимого сетевого кода на C ++, которая широко использует абстрактные и полуабстрактные интерфейсные классы, например, такие как:
// Semi-abstract interface for any C++ object that wants to
// be notified about network events
class INetworkEventReceiver
{
public:
INetworkEventReceiver(INetworkEventGenerator * master)
: m_master (master)
{
m_master->RegisterEventReceiver(this);
}
virtual ~INetworkEventReceiver()
{
m_master->UnregisterEventReceiver(this);
}
// Called by our m_master object whenever a network event happens
// Implemented by subclasses to do something useful.
virtual void NetworkEventReceived(const NetworkEvent & event) = 0;
private:
INetworkEventGenerator * m_master;
};
Все это прекрасно работает.Тем не менее, теперь есть интерес к использованию этой библиотеки в приложении для iOS через Objective C ++.
Мой вопрос заключается в том, как лучше всего в коде Objective-C ++ реализовать "методы ловушек", такие как NetworkEventReceived(const NetworkEvent & event)
выше?Я надеялся, что класс Objective-C ++ может просто создать подкласс INetworkEventReceiver
и объявить свой собственный виртуальный метод, как это делает подкласс C ++, но кажется, что Objective-C ++ не поддерживает этот .Каков следующий лучший способ сделать это?