C++ 構造体について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
棒人間

C++ 構造体について

#1

投稿記事 by 棒人間 » 11年前

C++, Dxlib.h, VisualStudio2010, Win7を使ってプログラムを作成しています。

メニュー画面の項目を構造体で作っているのですが、エラー一覧に「不完全な型は使用できません」と表示され、エラーが解決できません。

char ○○○[];が一つだと問題ないのですが、以下のように2つ書くとエラーが出ます。
エラーはchar MenuItem[];(構造体内の1行目)で起こっているようです。

<code>
typedef struct StartMenu{
char MenuItem[]; //メニュー項目名
char MenuItemDescription[]; //メニュー項目説明
}StartMenu;
</code>

C言語の知識は大学である程度学んでいるのですが、なぜエラーが出ているのかわかりませんでした。
なぜエラーが出ているのか、解決方法はあるのかが知りたいです。

質問方法を見て書きましましたが、不足があればそのご指摘の方もお願いしたします。
どうかご回答の方よろしくお願いいたします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: C++ 構造体について

#2

投稿記事 by みけCAT » 11年前

理由はよくわからないですが、char hoge[]を構造体の最後以外で定義してはいけないらしいです。
https://ideone.com/mFh0SU

素直にポインタ宣言子を使うのがいいと思います。

コード:

typedef struct StartMenu{
	char *MenuItem; //メニュー項目名
	char *MenuItemDescription; //メニュー項目説明
}StartMenu;
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: C++ 構造体について

#3

投稿記事 by h2so5 » 11年前

C99の構造体はサイズを指定しない配列(flexible array member)を最後のメンバに一つだけ持つことができます。
サイズを指定しない配列を二つ以上持っているとこれに違反するのでエラーとなります。

棒人間

Re: C++ 構造体について

#4

投稿記事 by 棒人間 » 11年前

伝説なるハッカー様、比類なきプログラマー様、
ご回答の方ありがとうございます。

サイズ指定なしの配列を2つ以上持ってはいけないというとだったのですね。
解決方法はNo2の方のものを参考にさせていただきます。

貴重なお時間をいただき、ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る