• ベストアンサー

構造体のextern方法

C++のビギナーなのですが、 普通の変数、配列のexternはできているのですが、 構造体をexternができずに困っています。 2時間ほど調べまわったのですが、 typedefを使わなければならない(?) とか 構造体は変数なんかと違い、特別なやり方をしないとダメらしい事までは解ったのですが、 実際動くやり方を見つけきれませんでした; 方法(手順)や、解説サイトなどをご存知でしたら、教えて頂けると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

まさか, 「実体を定義していない」というオチはないよなぁ....

zaxs5968
質問者

お礼

すみません、そのまさかでした; 値を入れる関数を通過したあとでexternしたら普通にできました; externする場合、一番初めに宣言しなければならないと思い込んで 値入れられないけどタグ名付けたし、ここで呼ぶしか・・等と考えてしまって やらかしてたみたいです。 orz そして 構造体 extern のキーワードで検索して見て回ってたサイトは きっと別の情報だったのですね・・。 お騒がせして申し訳ありませんでした。 無事解決できました。有難うございました。 っ_ _)っ

その他の回答 (3)

noname#208124
noname#208124
回答No.3

構造体の定義そのものをexternとかしてるんじゃないですよね 何に対してexternを付けられるのかわかってますか

zaxs5968
質問者

お礼

ご回答ありがとうございます。

zaxs5968
質問者

補足

すみません、 「構造体の配列」にexternをつけるとエラーが出てしまいます。 extern struct panel panels[35]; このようにすると error LNK2001: 外部シンボル ""struct panel * panels" (?panels@@3PAUpanel@@A)" は未解決です。 error LNK1120: 外部参照 1 が未解決です。 とエラーが出てしまいます。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>普通の変数、配列のexternはできているのですが、 >構造体をexternができずに困っています。 どんなソースコードを書いたときに、 普通の変数や配列ではできたことが 構造体ではできないのでしょうか? 構造体だからといって特別扱いする必要はないです。

zaxs5968
質問者

お礼

「構造体の配列」にexternをつけるとエラーが出てしまいます。 extern struct panel panels[35]; このようにすると externが無ければ正常に動くのですが、 error LNK2001: 外部シンボル ""struct panel * panels" (?panels@@3PAUpanel@@A)" は未解決です。 error LNK1120: 外部参照 1 が未解決です。 とエラーが出てしまいます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

別に構造体が「特別なやり方をしないとダメ」ということはないです. もちろんその変数の型がわからないといけないんですが, ちゃんと構造体を定義しておけば extern できます. 例えば, ヘッダに struct some_struct { int member1; double member2; char *member3; }; extern some_struct a_struct; とあれば, これを #include したファイルで a_struct を使うことができます.

zaxs5968
質問者

お礼

構造体そのものはそのままで使えたのですね。 ありがとうございます。