love! LOVEHINA - love2hina.net
メニュー



アーカイブ
2005/02/15 プロパティがインデックスを取り、配列を返すとき

作成者: カテゴリー: 未分類

ちょっとまじめに。

__property virtual KeyStatus * get_BufferedKeyCodeList(DirectInput::Key keycode) __gc [];

という、プロパティがあるとします。
これは、見てのとおり、配列を返すプロパティですね。

このプロパティに対して次のリクエストをします。

KeyStatus * MainWeaponKeys __gc[];
MainWeaponKeys = this->m_InputKeybord->BufferedKeyCodeList[DirectInput::Key::V];

ところが、これはコンパイルエラーが生じます。
> error C2664: \’DirectInputClass::clsDirectInputKeybord::get_BufferedKeyCodeList\’ : 1 番目の引数を \’int\’ から \’Microsoft::DirectX::DirectInput::Key\’ に変換できません。

はて?
このDirectInput::Key::Vは、DirectInput::Key keycodeに渡すものという意図で書いていますが、
どうやらコンパイラは、返された配列のインデックスとして扱ってしまうのかもしれませんね。

純粋にBufferedKeyCodeListを関数にしてしまうか、戻り値をSystem::Collections::ArrayListなどにしてやることで解決できますね。