2010-06-13 51 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部件。