トップページ > 過去ログ > 記事閲覧
vectorについて
名前:ネコイカ 日時: 2010/04/03 00:38

エラーは出ないのですが、Debug Assertion Faild! と出て止まってしまいます。 プログラムは下のような感じです(関係がありそうな部分を切り出しました)。 map = MapChipの構造体 int MAP_WIDTH = 20; int MAP_HEIGHT = 16; vector<vector<MapChip> > map; map.resize( MAP_HEIGHT); for(int i=0; i<MAP_WIDTH; i++) {map[i].resize(MAP_WIDTH);} //マップデータ/////////////////////////////////////////////////// int Map[ MAP_HEIGHT ][ MAP_WIDTH ] = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 0, 0, 0, 0, 1, 1 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 1, 0, 1, 0, 0, 1, 1 }, { 1, 0, 0, 0, 0, 0, 0, 1, 1, 0 , 0, 0, 0, 0, 0, 1, 0, 0, 1, 1 }, { 1, 0, 0, 0, 0, 0, 0, 1, 1, 0 , 0, 0, 1, 0, 1, 1, 1, 0, 1, 1 }, { 1, 0, 0, 0, 0, 0, 0, 1, 1, 0 , 0, 0, 1, 0, 0, 1, 1, 0, 1, 1 }, { 1, 0, 0, 0, 0, 0, 0, 1, 1, 0 , 0, 0, 1, 0, 0, 1, 1, 0, 1, 1 }, { 1, 1, 1, 0, 1, 1, 1, 1, 1, 0 , 0, 1, 1, 0, 0, 1, 1, 0, 1, 1 }, { 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 , 0, 1, 1, 0, 0, 1, 1, 0, 1, 1 }, { 1, 0, 0, 0, 1, 0, 0, 1, 0, 0 , 0, 1, 1, 0, 0, 1, 1, 0, 1, 1 }, { 1, 0, 0, 1, 1, 0, 0, 1, 0, 0 , 0, 1, 1, 0, 0, 1, 1, 0, 1, 1 }, { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1 , 1, 1, 1, 0, 0, 1, 1, 0, 1, 1 }, { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }, { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, }; for(i=0; i<MAP_HEIGHT;i++){ for(j=0;j<MAP_WIDTH;j++) { map[i][j].Image = Map[i][j]; } } どうかご指南をよろしくお願いします

Page: 1 |

Re: vectorについて ( No.1 )
名前:Masao 日時:2010/04/03 09:05

for(int i=0; i<MAP_WIDTH; i++) {map[i].resize(MAP_WIDTH);} ↓ for(int i=0; i<MAP_HEIGHT; i++) {map[i].resize(MAP_WIDTH);} じゃない?
Re: vectorについて ( No.2 )
名前:ネコイカ 日時:2010/04/03 01:34

夜中に早い返信ありがとうございます。 for(int i=0; i<MAP_HEIGHT; i++) {map[i].resize(MAP_WIDTH);} を増やしても駄目でした。 この状態でmap.resize( MAP_HEIGHT); を消してみましたがコチラも同じくDebug Assertion Faild!が出て止まってしまいました
Re: vectorについて ( No.3 )
名前:Ma 日時:2010/04/03 09:03

当方Debug Assertion Faild! がどんなときに出るか、正直よくしらないんですが、直感的には resize 関数内で問題が発生しているのではないでしょうか? 追記 このレス無視してください。 resize は、標準ライブラリの関数であって作った関数ではなかったのですね。 勘違いしてました。
Re: vectorについて ( No.4 )
名前:Ma 日時:2010/04/03 09:07

あと追記 >を増やしても駄目でした。 いやいや、増やしてどうするのw for(int i=0; i<MAP_WIDTH; i++) {map[i].resize(MAP_WIDTH);} は、間違いでしょ。 i <= MAP_HEIGHT まででしょ?それなのに、i > MAP_HEIGHT を参照してはいけないでしょ。 正しくは、下記。 for(int i=0; i<MAP_HEIGHT; i++) {map[i].resize(MAP_WIDTH);} あ、あと map.resize(MAP_HEIGHT); は必要なので戻してくださいね。
Re: vectorについて ( No.5 )
名前:ネコイカ(解決) 日時:2010/04/03 23:40

Meさんお答えいただいてありがとうございます。 どうも夜中だったのでボケてたみたいですね。 矢印が見えていませんでした。 ちなみに止まるエラーはマップの表示処理の方で このマップデータを読み込む関数を呼び出してなかっただけでした。 返信下さった皆様、本当に申し訳ないです

Page: 1 |