iPhone项目中的c ++模板

AP.*_*AP. 1 c++ iphone templates objective-c

我正在将一个项目移植到iPhone系统,我遇到了以下问题:我有一个包含c ++模板的标题如果我将它重命名为.mm,它不会编译(因为它应该是一个标题)并且如果我保留它.h,它被解释为一个客观的C头

您有解决此问题的解决方法吗?

提前致谢!

问候,

编辑:添加错误消息和代码

template <typename T>
class CML_Matrix
{
public:
//rest of teh template
};
Run Code Online (Sandbox Code Playgroud)

错误消息是"无法找到typename的协议声明"

Sev*_*yev 5

包裹它

#ifdef __cplusplus
//templates here
#endif
Run Code Online (Sandbox Code Playgroud)

这样,当文件包含在C或Objective C(.m)源中时,将以静默方式忽略模板.

你也可以包含一些Objective C-only构造

#ifdef __OBJC__
Run Code Online (Sandbox Code Playgroud)

编辑:您也可以将源(不是标题!)重命名为.mm.由于它是一个混合的ObjC/C++项目,你可能必须在某个时候实例化/调用C++类; 为此,无论如何你都需要Objective C++.但是从来没有试过这个.