在mm文件中包含mm文件

时间:2014-07-25 11:14:34

标签: c++ objective-c objective-c++

我有一个带有c ++代码和类声明的.mm文件。我想将它包含在另一个.m文件中,但编译器开始在另一个类中给出错误 未知的类型名称'class';你的意思是'上课'吗?

请注意.m文件已包含在.mm文件中。

e.g

A.H

A.mm - >这堂课有#include“B.h”

B.h - > #include“A.h”当我尝试导入A.h时出错。

B.m - > #include“A.h”当我尝试导入A.h时出错。

我已尝试在.m文件中使用struct,但该方法未在实例中调用。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

你真的想做什么?尝试在源文件中包含源文件是一件非常罕见的事情,通常会在程序的架构中出现其他错误的信息。

通常,您应该为每个.m和.mm文件都有一个标头和一个实现文件。如果您不希望ObjC类声明位于主标头中(例如,因为您正在实现框架并且此标头是框架的公共API),您还可以使用多个标头。例如。你可以有一个MyClass.h和一个MyClassPrivate.h,只包括第二个。

你不能真正使用普通ObjC的C ++(这就是ObjC ++的用途),所以在ObjC文件中使用.mm的标题是不可能的。除非你把它分成ObjC部分(你可以使用)和C ++部分,例如在几个标题中。

有关混合直接ObjC和ObjC ++的更多信息,请查看我在此主题中的答案:Can I separate C++ main function and classes from Objective-C and/or C routines at compile and link?

我还播放了一个播客节目,其中我详细介绍了使用C ++和ObjC的变幻莫测:http://nsbrief.com/113-uli-kusterer/特别要确保你对编译单元或你的100%坚定将始终遇到问题,包括来自C ++的ObjC头文件或来自ObjC的(Obj)C ++头文件。