在C ++类中是否可以引用Objective C协议?的

(id)<B2ContactListener> _B2ContactListener;


行导致两个错误:

'预期;在声明清单的末尾”



“ C ++要求所有声明都使用类型说明符”。

这是代码。

B2_ContactListener.mm:

#import "Box2D.h"
#import "B2_ContactListener.h"

class ContactListener : public b2ContactListener
{
private:
  (id)<B2ContactListener> _B2ContactListener; // ERRORs

public:
  //Methods
};


B2_ContactListener.h:

#import "B2_Contact.h"

@protocol B2ContactListener
-(void)B2BeginContact: (B2Contact*) contact;
@end


我正在使用当前的XCode编译器BTW。

最佳答案

删除括号:

id<B2ContactListener> _B2ContactListener;


那应该工作。

您可能要考虑的另一件事是将其设置为NSObject *,因此您可以调用从NSObject继承的方法而不必进行强制转换。

关于c++ - objective-c 协议(protocol)引用作为C++类中的实例变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12564593/

10-10 06:36