- PR -

配列の定義について(VC2005)教えてください。

投稿者投稿内容
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2006-04-11 16:47
OS:XP
VC2005 C++/CLI
で開発しています。

■メンバ変数に配列を定義したいのですが、下記のようなエラー
で、ビルドが出来ません。どのように記述すれば良いでしょうか?
ヘルプを見てみても、良い情報が出ていませんでした。。
よろしく御願いいたします。

int test; ← ok
int test[5]; ← エラー

error C4368: 'ff' をマネージ 'StockManagement:lg_IkeMap' のメンバとして定義できません。混合型はサポートされていません

*通常の関数内に定義などは、OKです。。

御願いいたします。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-04-11 16:54
refクラスの中には確かだめだったような、、、
http://msdn2.microsoft.com/ja-JP/library/xhfb39es(VS.80).aspx

ポインタとして宣言するか、array<int>^ 型で宣言するかどちらかでしょうかね。
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 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];

のような領域を与えたいのですが・・

よろしく御願いいたします。



Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-04-11 17:16
2次元配列もできます。

array< int, 2 >^
http://msdn2.microsoft.com/ja-JP/library/ms235236(VS.80).aspx
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 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' には、既定のインデックス付きのプロパティ (クラス インデクサ) がありません
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

よろしく御願いいたします。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-04-11 17:58
point[ 1, 2 ] = x;

かな。


point[ 1 ][ 2 ] = x;

としたい場合は、array< array< int >^ >^ とすればいいです。
ただし、
コード:

array< array< int >^ >^ a = gcnew array< array< int >^ >( 5 );
a[ 0 ] = gcnew array< int >( 3 );
a[ 1 ] = gcnew array< int >( 3 );
 ・・・


とめんどくさいですけど。
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 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' 型の混用は安全ではありません
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

以上です。
よろしく御願いいたします。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-04-11 19:17
boolは値型なんで

array<bool, 2>^// bool^ ではない。(intとかもそう)

です。

スキルアップ/キャリアアップ(JOB@IT)