私はObjective C(およびそのことについてはobjective-c ++)を学習しているだけで、次のコンストラクターを持つObjective-C ++クラスがあります。
void InputManager::_init (int inputAreaX, int inputAreaY, int inputAreaWidth, int inputAreaHeight)
Objective Cからこれを呼び出すにはどうすればよいですか?
私はObjective C(およびそのことについてはobjective-c ++)を学習しているだけで、次のコンストラクターを持つObjective-C ++クラスがあります。
void InputManager::_init (int inputAreaX, int inputAreaY, int inputAreaWidth, int inputAreaHeight)
Objective Cからこれを呼び出すにはどうすればよいですか?
これは純粋な C++ メソッドのように見えるため、通常の C++ とまったく同じように機能します (Objective-C++ ファイルであっても)。たとえば、スタックに変数を定義したとします。
InputManager mgr; // or, include constructor arguments if the class can't be default-constructed
mgr._init(x, y, w, h); // this assumes 4 variables exist with these names; use whatever parameter values you want
ただし、名前_init
は少し奇妙です。これがクラスのコンストラクターになることを意味しますか? もしそうInputManager::InputManager(int x, int y, int w, int h)
なら、おそらく代わりに定義されるべきです。
実際にこのクラスをObjective-C のみにしたい場合は、構文と動作が異なります。
次の 2 つのオプションがあります。
オプション1。
Objective-C のみのコードに変換します。私は C++ はあまり得意ではありませんが、これは .h で次のように表示される可能性があります。
-(id)initWithAreaX: (int) inputAreaX AreaY: (int) inputAreaY AreaWidth: (int) inputAreaWidth AreaHeight: (int) inputAreaHeight;
これはコンストラクター メソッドのように見えるため、実装ではおそらく次のようになります。
-(id)initWithAreaX: (int) inputAreaX AreaY: (int) inputAreaY AreaWidth: (int) inputAreaWidth AreaHeight: (int) inputAreaHeight {
self = [super init];
if(self) {
//Custom Initialization Code Here
_inputAreaX = inputAreaX;
_inputAreaY = inputAreaY;
_inputAreaWidth = inputAreaWidth;
_inputAreaHeight = inputAreaHeight;
}
return self;
}
そして、あなたはそれを次のように呼ぶかもしれません:
InputManager *object = [[InputManager alloc] initWithAreaX: 20 AreaY: 20 AreaWidth: 25 AreaHeight: 25];
オプション 2。
Objective-C++ の全体的な目的は、開発者が C++ と Objective-C コードを統合できるようにすることです。Objective-C から Objective-C++ メソッドを呼び出す方法を知りたいと思っていますが、Objective-C++ の全体的な目的は 2 つを統合することであるため、Objective-C++ メソッドを呼び出すための抜け穴を見つけようとしても意味がありません。それ以外は完全に Objective-C のファイルです。したがって、2 番目のオプションは、".mm" 拡張子を持つ Objective-C++ ファイルで Objective-C++ メソッドを呼び出すファイルを作成することです。
お役に立てれば!