重複インクルード

[戻る]
あやな 2003/02/22(土) 00:58:29
初めまして、あやなと申します。
いつも大変お世話になっております。

早速ですが、質問の方に入りたいと思います。
現在、クラスを作り、それをヘッダファイルにまとめ、他の異なる多数のcppファイルからその
クラスをまとめたヘッダを読み込んでいます。
しかし、一つのファイルからヘッダを読み込む場合は良いものの、複数のファイルからデータを
読み込んだ場合、
『main.obj : error LNK2005: "public: void __thiscall CSpriteEx::SetPos
(float,float)" (?SetPos@CSpriteEx@@QAEXMM@Z) はすでに action.obj で定義されていま
す』
といったエラーがかなり出てしまいました。

このような場合、重複インクルードを防ぐ為、#ifndefや#pragma onceという事を調べて知
り、それを試してみたものの、相変わらず同じエラーが消えません。
過去ログや初心者向けのサイトを調べては見たものの、どうしても分からず、質問させていただ
きました。
とても初歩的なことかとも思いますが、どうぞ宜しくお願いいたします。

kazuma 2003/02/22(土) 01:15:11
ヘッダファイルで、
void CSpriteEx::SetPos(float x, float y)
{
}
こんな風に、(クラスの定義の外に)メンバ関数の実装を書いてませんか?

もしそうなら、
メンバ関数の実装をそのクラス(CSpriteEx)用のソースファイル(.cpp)に移すか、
クラスの定義の中に移せばいいです。

あやな 2003/02/22(土) 01:35:00
[[解決]]
kazuma様、とてもお早いお返事ありがとうございました。
クラス定義の外に間違って書いてしまっていたらしく、それを修正したところエラーもなくなり
正常に動くようになりました。
誠にありがとうございました。

古いスレッドには追加発言できません。