web-dev-qa-db-ja.com

XCodeのObjective-CでC ++を使用するにはどうすればよいですか?

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でコードをコンパイルすると、このエラーメッセージが表示されます。

 class Hello * XXXXX 
 Users/smcho/Desktop/cocoa/adderTwo/hello.h:9:0 
/Users/smcho/Desktop/cocoa/adderTwo/hello.h :9:
エラー:「こんにちは」の前に「=」、「、」、「;」、「asm」または「__attribute__」が必要です

何が悪かったのか?

21
prosseek

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

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

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

  1. ファイルを選択します。
  2. [ファイル情報]ダイアログを開きます(Cmd + I)
  3. [ファイルの種類]で、[sourcecode.cpp.objcpp]を選択します
34
kennytm

Objective-Cファイルの名前をfilename.mからfilename.mmに変更して、Objective-C++としてコンパイルできるようにします。

7
Marcelo Cantos