我已将.CPP及其.h文件从工作项目复制到新项目。
我将.CPP的结尾重命名为.mm,但它仍然给我错误。
在.h文件中,靠近类定义
class MeterTable
,它表示期望;
在.mm文件中,存在各种错误。
我想通过更改实现文件.mm的结尾来清除所有这些错误。是的,在旧项目下编译的原始.CPP文件。
答案 0 :(得分:2)
您似乎将.h
文件包含在其他.m
文件中。您不能只将C ++标头包含在C或Objective-C源文件中。您需要确保您的C ++接口与C兼容(没有类,只有自由函数而不会超载)。或者您必须将项目中的所有.m
文件更改为.mm
。
答案 1 :(得分:0)
唯一的解决方案是使用内联头文件。
将 .h 文件更改为 .hpp ,并将 .cpp 文件与 .h 文件合并
例如;您的 .h 文件:
// class.h
class {
public:
void someclass(int a);
};
您的 .cpp 文件:
// class.cpp
#include "class.h"
void someclass(int a) {
return;
}
像这样合并到 .hpp :
// class.hpp
class {
public:
void someclass(int a) {
return;
}
};
答案 2 :(得分:0)
Objective-C和C ++可以很好地协同工作,但有一些注意事项。首先,任何引用C ++代码的.m
文件(即通过标头)必须定义为Objective-C ++源,不是 Objective-C。这可以根据具体情况进行,方法是转到.m
文件的文件检查器,并将文件类型从Objective-C Source
更改为Objective-C++
源。其次,使用相同的方法将.h
和.cpp
(或.mm
,实际扩展并不重要,它是定义的类型)定义为C++ Header
和{{ 1}}源,分别。
只要你使用文件类型的这种分区,就应该能够自由地混合使用Objective-C和C ++ - 我通常使用这个范例在我的iOS代码中使用C ++。