Obj-C ++头文件中的AppKit对象?

时间:2012-02-14 14:19:58

标签: c++ objective-c cocoa

我很高兴在目标C ++(。mm)标头和实现文件中使用C ++对象,以及从我的C ++实现文件中调用Objective C(++)类,每个尝试在 C ++头文件中使用Objective C类会导致编译器错误。

这个类声明的东西无法编译:

class CQuartzTextRenderer {

public:
                 CQuartzTextRenderer();
 virtual        ~CQuartzTextRenderer();
 virtual void    Render(CDrawingOptions &inDrwOpt);


private:

  NSFont*  CreateNSFontForFontName(string &fontName, int fontSize);
};

无论如何(AppKit / ..)包括我尝试过。 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您不能在.cpp包含的头文件中包含Objective-C类,因为XCode将使用标准g ++编译器并将该文件视为普通C ++。

要修复这些错误(并允许在头文件中使用Objective-C类),您必须确保只有.mm个文件包含头文件,而不是{ {1}}。

只是一个补充:实际上你可能会.cpp加上foobar.h。这是正确的,允许您在头文件中包含Objective-C,但如果该文件被foobar.mm.cpp包含的另一个.h包含在其他地方,那么您会收到编译错误。请注意,每个单元都是独立编译的。