トップページ > 過去ログ > 記事閲覧
エラーの解決法について
名前:素人 日時: 2008/09/09 22:26

現在VC2008でプログラムを作成中なのですが、以下のようなエラーが発生してしまいビルドが出来ません。 GameObject.obj : error LNK2001: 外部シンボル ""private: static class std::list<struct ListData,class std::allocator<struct ListData> > CGameObject::objectlist" (?objectlist@CGameObject@@0V?$list@UListData@@V?$allocator@UListData@@@std@@@std@@A)" は未解決です。 fatal error LNK1120: 外部参照 1 が未解決です。 どのようにしたら解決できるのでしょうか。教えていただけるとありがたいです。

Page: 1 |

Re: エラーの解決法について ( No.1 )
名前:キーチック 日時:2008/09/10 03:12

滅多に見ないエラーなのですが,予想としては,そういう名前のクラスを宣言だけしていて 実体を作っていないとか,あるいは,妙なところに}もしくは;を入れてしまって, DxLib.hなどで宣言されているクラスが変な途切れ方をしてしまったとか, 考えられないことはないので,そういう可能性を考慮してソースファイルを 見直して見てください. それでもわからないようでしたら,ソースファイルを張りつけるなどしていただくなど, もう少し情報がわかるようにしていただくかしないと,答えにくいと思います.
Re: エラーの解決法について ( No.2 )
名前:素人 日時:2008/09/10 22:56

申し訳ありません。見直してもやはり分からないため、ソースの方を張らせていただきます。 作りかけで少々見難いかもしれませんが、大体このような形のソースになっています。 #include "GameDef.h" #include "DxLib.h" #include <list> using namespace std; class CGameObject; struct ListData { int ipriority; // 実行順位 char cname[NAME_SIZE]; // 管理名称 CGameObject *gameobj; // オブジェクトのポインタ bool autodelete; // リスト削除と同時にオブジェクト削除 }; class CGameObject { public: static void AppendObject(ListData &listdata); private: static list<ListData> objectlist; }; void CGameObject::AppendObject(ListData &listdata) { if(NULL == listdata.gameobj){ return; } // リストの先頭に追加 if( 0 == objectlist.size() ){ objectlist.push_front(listdata); return; } // オブジェクトの順位に従い挿入 list<ListData>::iterator itr; for( itr = objectlist.begin(); itr != objectlist.end(); itr++) { if( (*itr).ipriority > listdata.ipriority ){ objectlist.insert(itr, listdata); return; } } // 間に入れるところがなければ、リストの最後に追加 objectlist.push_back(listdata); } 何か分かりましたらどうかお答えいただけると助かります。 どうかよろしくお願いいたします。
Re: エラーの解決法について ( No.3 )
名前:Will 日時:2008/09/11 09:41

GameDef.hの内容がわからないのでこちらで確認できませんが > static list<ListData> objectlist; が間違っているためと思います。 正:static list<struct ListData> objectlist; 構造体の宣言を以下のようにしても直ると思います typedef struct { //省略 } ListData;
Re: エラーの解決法について ( No.4 )
名前:maki 日時:2008/09/11 10:22

staticメンバ変数objectlistの初期化はどこかでやってるんですかね? やってないなら初期化してあげればうまくいくような気がしますが
Re: エラーの解決法について ( No.5 )
名前:素人 日時:2008/09/11 22:56

皆さん、回答していただきどうもありがとうございます。 試してみたところ、makiさんの言われたとおり静的変数を初期化していなかったせいのようでした。 これでようやく続きが出来ます。本当に助かりました。どうもありがとうございました。

Page: 1 |