【发布时间】:2019-05-28 00:57:52
【问题描述】:
我有一个可移植的 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;
};
一切正常。但是,现在有兴趣通过 Objective C++ 在 iOS 应用程序中使用这个库。
我的问题是,Objective-C++ 代码实现像上面的NetworkEventReceived(const NetworkEvent & event) 这样的“挂钩方法”的最佳方式是什么?我希望 Objective-C++ 类可以简单地继承 INetworkEventReceiver 并声明自己的虚拟方法,就像 C++ 子类那样,但似乎 Objective-C++ doesn't support that。实现这一目标的下一个最佳方法是什么?
【问题讨论】:
标签: inheritance callback objective-c++ virtual-functions