从C ++成员函数调用Objective-C方法?我有一个class(EAGLView)调用类的成员函数C++没有问题。现在,问题是我需要在C++该类中调用一个objective-C function [context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer];我在C++语法中无法做到的。我可以将这个Objective-C调用包装到同一个Objective-C类中,它首先调用C ++类,但后来我需要以某种方式调用该方法C++,而我无法弄清楚如何去做。我试图给一个指向EAGLViewC ++成员函数的对象的指针,并EAGLView.h在我的C++类头中包含“ ” 但我得到了3999个错误..那么......我该怎么做?一个例子很好..我只找到C了这样做的纯粹例子。
3 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
您可以将代码编译为Objective-C ++ - 最简单的方法是将.cpp重命名为.mm。如果你包含它会正确编译EAGLView.h
(你因为C ++编译器不理解任何Objective-C特定的关键字而得到很多错误),你可以(大部分)混合使用Objective-C和C ++但是你喜欢。
慕的地8271018
TA贡献1796条经验 获得超4个赞
最简单的解决方案是简单地告诉Xcode将所有内容编译为Objective C ++。
为Compile Sources设置项目或目标设置与Objective C ++相同并重新编译。
然后你可以在任何地方使用C ++或Objective C,例如:
void CPPObject::Function( ObjectiveCObject* context, NSView* view ){ [context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)view.layer]}
这与将.cpp或.m重命名为.mm的所有源文件具有相同的效果。
这有两个小缺点:clang无法分析C ++源代码; 一些相对奇怪的C代码不能在C ++下编译。
- 3 回答
- 0 关注
- 586 浏览
添加回答
举报
0/150
提交
取消