2010-06-13 47 views
1

考虑followng情况:包含的OBJ-C++头从C++源文件

MacFont.h

struct MacFont : Font 
{ 
    // ... 

    NSFont* font; 
}; 

MacFont将在MacFont.mm实施

FontEngine.cpp:

#if defined(OS_MAC) 
#include "MacFont.h" 
#elif 
// ... 
#endif 

//... 

为了使它编译,我应该重命名FontEngine.cpp FontEngine.mm,但我不是所有结婚。

那么现在呢?

+1

你为什么不被允许? – 2010-06-13 21:52:42

回答

3

如果您不能更改文件名,请不要担心。请查阅您的编译器手册以获取强制文件类型的选项,并告诉编译器该文件(不管扩展名)是否为Objective-C++文件。

+1

嗯,我做了-x objective-C++,但在程序中我仍然遇到了诸如“流浪@”之类的错误... – Schwitzgabel 2010-06-14 13:00:45

0

您只能将ObjC的东西(例如NSFont)编译成ObjC文件(ir .m或.mm),因此只能进行重命名。

您可以创建另一个继承自FontEngine.cpp中C++对象的C++对象,然后该C++对象可以实现包括Obj C部件。