ページ 11

構造体

Posted: 2012年7月16日(月) 03:11
by 田中太郎
構造体を勉強しているのですが、構造体の中の変数への代入で詰まってしまいました。
エラーは、cppファイルの mon[0].pow の0と後ろのピリオドに出ていて、「配列のサイズは0より大きくなくてはいけません。」と、
「宣言が必要です。」が表示されました。
作成環境は、Win7、VC++2010、DxLib、を使用しています。
どなたかご教授お願いします。

※ヘッダーで MON_DEF_H となっているのは MON_DAT_DEF_H と書くと長いので、わざと MON_DEF_H としています。

コード:

//mon_dat.h

#ifndef MON_DEF_H
#define MON_DEF_H

typedef struct
{
	int num;
	int pow;
	int def;
}Mon_t;

extern Mon_t mon[2];

#endif

コード:

//mon_dat.cpp

#include "../h/mon_dat.h"

Mon_t mon[2] =
{
	{ 001, 1000, 500 },
	{ 002, 1500, 750 },
};

//↓これを実行させたいです。
//mon[0].pow = 2000;

Re: 構造体

Posted: 2012年7月16日(月) 07:50
by h2so5
変数への代入を関数外でしていませんか?

Re: 構造体

Posted: 2012年7月16日(月) 09:43
by ミーン
よく分かりませんが、これでどうでしょうか?

コード:

Mon_t mon[2];

// 構造体の初期化
mon[0].num = 001;
mon[0].pow = 1000;
mon[0].def = 500;
mon[1].num = 002;
mon[1].num = 1500;
mon[1].def = 750;

mon[0].pow = 200

Re: 構造体

Posted: 2012年7月16日(月) 10:29
by 田中太郎
>h2so5さん
おっしゃる通りでした。
ごめんなさいとしか言いようがないくらい酷いですね。

コード:

void mod_dat()
{
	Mon_t mon[2] =
	{
		{ 001, 1000, 500 },
		{ 002, 1500, 750 },
	};

	mon[0].pow = 2000;
}
これでエラーは出ませんでした。
このような質問でお時間を取らせてしまい、申し訳ありませんでした。

>ミーンさん
関数を作っていなかっただけでした。
プログラムまで貼って頂いたのに、ごめんなさい。


今後もここで質問をすると思うので、その時はまたよろしくお願いします。
ありがとうございました。