22

Objective-C で C++ オブジェクトを使用/再利用したい。クラス定義を持つ hello.h と、クラス実装用の hello.cpp があります。

class Hello
{ int getX() ... };

そして、このクラスを Objective-C 関数で使用します。

#include "hello.h"
...
- (IBAction) adderTwo:(id)sender
{
    Hello *hi = new Hello();            
    int value = hi->getX();
    NSLog(@"Hello %d", value);
    [textField setIntValue:value];

Xcode でコードをコンパイルすると、このエラー メッセージが表示されます。

クラス こんにちは *XXXXX
ユーザー/smcho/デスクトップ/ココア/adderTwo/hello.h:9:0
/Users/smcho/Desktop/cocoa/adderTwo/hello.h:9:
エラー: 'Hello' の前に '='、','、';'、'asm' または '__attribute__' が必要です

何が悪かったのか?

4

2 に答える 2

34

そのファイルを必ず「Objective-C++」としてコンパイルしてください。

最も簡単な方法は、名前を*.mmに変更することです。

*.m ファイルの名前を変更したくない場合は、

  1. ファイルを選択します。
  2. ファイル情報ダイアログを開く (Cmd+I)
  3. ファイルの種類で、「sourcecode.cpp.objcpp」を選択します
于 2010-04-21T13:11:11.407 に答える
7

Objective-C ファイルの名前を からfilename.mfilename.mm変更して、Objective-C++ としてコンパイルします。

于 2010-04-21T13:10:44.897 に答える