- - PR -
配列の定義について(VC2005)教えてください。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-11 16:47
OS:XP
VC2005 C++/CLI で開発しています。 ■メンバ変数に配列を定義したいのですが、下記のようなエラー で、ビルドが出来ません。どのように記述すれば良いでしょうか? ヘルプを見てみても、良い情報が出ていませんでした。。 よろしく御願いいたします。 int test; ← ok int test[5]; ← エラー error C4368: 'ff' をマネージ 'StockManagement:lg_IkeMap' のメンバとして定義できません。混合型はサポートされていません *通常の関数内に定義などは、OKです。。 御願いいたします。 | ||||
|
投稿日時: 2006-04-11 16:54
refクラスの中には確かだめだったような、、、
http://msdn2.microsoft.com/ja-JP/library/xhfb39es(VS.80).aspx ポインタとして宣言するか、array<int>^ 型で宣言するかどちらかでしょうかね。 | ||||
|
投稿日時: 2006-04-11 17:12
Blueさん、
レスありがとう御座います。 >refクラスの中には確かだめだったような、、、 >http://msdn2.microsoft.com/ja-JP/library/xhfb39es(VS.80).aspx >ポインタとして宣言するか、array<int>^ 型で宣言するかどちらかでしょうかね。 出来ないのですね。。予想外でした。。 array<int>^ を使って進めたいと思うのですが、 2次元配列の場合は、どのように、記述すればいいのでしょうか? また、サイズの決めるには、どうすればいいのでしょうか?? 例:test[5][5]; のような領域を与えたいのですが・・ よろしく御願いいたします。 | ||||
|
投稿日時: 2006-04-11 17:16
2次元配列もできます。
array< int, 2 >^ http://msdn2.microsoft.com/ja-JP/library/ms235236(VS.80).aspx | ||||
|
投稿日時: 2006-04-11 17:46
Blueさん
レスありがとうございます。 領域を与えることができました。。 point = gcnew array<bool^,2>(7,9); 上記の内容で、領域を与えることが出来ました、 ただ、下記のような内容で、初期化しようとしたところ エラになってしまいました。。。 記述がよくないと思うのですが、どのように 記述すれば、良いのでしょうか? 領域の取り方が変わったので、記述も 変わると思うのですが、どのように書けば良いのでしょうか? for(y = 0; y < MAX_Y; y++){ //ポイントデータ初期化 for(x = 0; x < MAX_X; x++){ point[y][x] = false; ←エラー箇所 } } エラー内容−−−−−−−−−−−−−−−−−−−−−−−−−− error C3262:無効な配列のインデックスです。1 次元が指定されました。2 次元の 'cli::array<Type,dimension> ^' が選択されています。 with [ Type=System::Boolean ^, dimension=2 ] error C3915: 'System::Boolean' には、既定のインデックス付きのプロパティ (クラス インデクサ) がありません −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− よろしく御願いいたします。 | ||||
|
投稿日時: 2006-04-11 17:58
point[ 1, 2 ] = x;
かな。 point[ 1 ][ 2 ] = x; としたい場合は、array< array< int >^ >^ とすればいいです。 ただし、
とめんどくさいですけど。 | ||||
|
投稿日時: 2006-04-11 18:39
Blueさん、
レスありがとう御座います。 ■引用−−−−−−−−−−−− point[ 1, 2 ] = x; かな。 −−−−−−−−−−−−−−− 上記のやりかたで、うまくいったのですが、 下記のようなWarningが出てきてしまいました。 trueかfalseを格納したいので、bool型で定義しているのですが 何か間違っていますでしょうか?? −XXX.h− array< bool^, 2 >^ point; −−−−−−−−−−−−−−−−−− −XXX.Cpp− point = gcnew array<bool^,2>(7,9); ←領域作成 for(y = 0; y < MAX_Y; y++){ //ポイントデータ初期化 for(x = 0; x < MAX_X; x++){ point[y,x] = false; ← エラー箇所(Warning) } } −−−−−−−−−−−−−−−−−− ■Warning −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− warning C4965: 整数 0 の暗黙的なボックスです。nullptr または明示的なキャストを使用してください : warning C4805: '==' : 演算中の 'System::Boolean ^' 型と 'bool' 型の混用は安全ではありません −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 以上です。 よろしく御願いいたします。 | ||||
|
投稿日時: 2006-04-11 19:17
boolは値型なんで
array<bool, 2>^// bool^ ではない。(intとかもそう) です。 |