0

I have copied a .CPP and its .h file from a working project to a new one.

I renamed the ending from .CPP to .mm but it still gives me errors.

In the .h file, near the class definition class MeterTable, it says it expect the ;

In the .mm file, there are all kinds of errors.

I thought by changing the ending of the implementation file .mm it would clean all those errors. And yes, the original .CPP file compiled under the old project.

4

3 回答 3

2

看起来您正在将该.h文件包含到其他.m文件中。您不能只将 C++ 标头包含到 C 或 Objective-C 源文件中。您需要确保您的 C++ 接口与 C 兼容(没有类,只有没有重载的自由函数)。.m或者您必须将项目中的所有文件更改为.mm.

于 2012-10-16T18:23:29.693 回答
0

Objective-C 和 C++ 可以很好地结合使用,但有一些注意事项。首先,任何.m引用 C++ 代码(即通过头文件)的文件都必须定义为 Objective-C++ 源代码,而不是Objective-C。这可以通过转到文件检查器的.m文件并将文件类型从更改Objective-C SourceObjective-C++源来逐个完成。其次,使用相同的方法将.hand .cpp(或者.mm,实际扩展并不重要,它是定义的类型)分别定义为C++ Headerand source。Objective-C++

只要您使用这种文件类型的划分,您就应该能够自由地混合使用 Objective-C 和 C++——我通常使用这种范例在我的 iOS 代码中使用 C++。

于 2013-09-14T17:38:23.560 回答
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;
    }
};
于 2013-09-14T17:20:13.257 回答