1

考虑以下情况:

MacFont.h

struct MacFont : Font
{
  // ...

  NSFont* font;
};

MacFont 将在 MacFont.mm 中实现

字体引擎.cpp:

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

//...

为了使它编译,我应该将 FontEngine.cpp 重命名为 FontEngine.mm 但我不允许这样做。

所以现在怎么办?

4

2 回答 2

3

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

于 2010-06-13T22:07:34.927 回答
0

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

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

于 2010-06-13T21:53:07.530 回答