1

次の状況を考慮してください。

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 に変更する必要がありますが、許可されていません。

ならどうしよう?

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 に答える