質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1417閲覧

配列に値が代入されない

gRivXOzYyYyDl1W

総合スコア20

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/05/30 04:23

C++で、いくつかの配列をまとめた多重配列をつくりたいのですが上手く代入されません。

Player_Panel,Enemy_Panelは3*3行列の配列 Panel_ALL配列は、Player_Panel,Enemy_Panel配列をまとめた6*6行列の配列 ------------------------------------------------------------------------- int i=0; int j=0; for (i = 0;i < 3;i++) { for (j = 0;j < 3;j++) { Player_Panel[i][j] = new Panel_Field((Panel_Blue*)p_blue,D3DXVECTOR3(Side_Location + (SIZE*j), Player_Location - (i*SIZE), 0.f), D3DXCOLOR(0.f, 1.f, 1.f, 0.6f), SIZE,i+3,j); Enemy_Panel[i][j] = new Panel_Field((Panel_Blue*)p_blue,D3DXVECTOR3(Side_Location + (SIZE*j), Enemy_Location - (i*SIZE), 0.f), D3DXCOLOR(1.f, 1.f, 0.f, 0.6f), SIZE,i,j); Panel_ALL[i][j] = Player_Panel[i][j]; /*代入される*/ index_w = i + 3; index_h = j + 3; Panel_ALL[index_w][index_h] = Enemy_Panel[i][j]; /*代入されない*/ } } ------------------------------------------------------------------ for (i = 0;i <6;i++) { for (j = 0;j < 6;j++) { Panel_ALL[i][j]->Update(); /*j=3のときにエラーが発生(NULLへの参照)*/ } }

Panel_All配列使うときに、Panel_ALL[][3]以降の要素に参照するとNULLへの参照になるため、おそらくEnemy_Panel配列が代入できていないと考えています。なぜ代入されないのでしょうか?
この原因のご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2020/05/30 04:33

最低限、問題が再現できるだけのソースを上げて下さい。 また、環境(OS、処理系等)を提示して下さい。
guest

回答2

0

3×3の行列を2セット(計18要素)、6×6の行列(36要素)に設定していますよね。
これで全部ならば、6×6の行列の残り18要素には何も設定していませんよね。
単に、未設定の要素を参照してNULL参照が出ているだけですね。

投稿2020/05/30 04:50

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gRivXOzYyYyDl1W

2020/05/30 05:31

ご回答ありがとうございます。 ご指摘の通り、初歩的なミスでした。
guest

0

ベストアンサー

代入できていないのではなく、
index_w35なのでPanel_ALL[0~2][0~5]にはなにも代入しておらず

C++

1 for (i = 0;i <6;i++) { 2 for (j = 0;j < 6;j++) { 3 Panel_ALL[i][j]->Update(); /*j=3のときにエラーが発生(NULLへの参照)*/ 4 } 5 }

Panel_ALL[0][3]にアクセスしようとしてエラーになっているだけでは?

投稿2020/05/30 04:36

編集2020/05/30 04:38
SHOMI

総合スコア4079

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gRivXOzYyYyDl1W

2020/05/30 04:47

ありがとうございます。解決しました。 御指摘の通りのミスでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問