わかりました。変数定義を移動することでエラーを修正しましたが、なぜ問題があるのか わかりません。
簡略化された背景: オブジェクトがあり、そのオブジェクトのすべてのインスタンスをリストで追跡したいので、単純にクラスの List<> 静的メンバーを作成しました。以下は、私がそれで遊ぶことを可能にした簡単な表現です。静的ライブラリで「この行」としてマークされた行があるとします。実行時エラーが発生します。オブジェクトはヘッダー ファイルで定義され、両方の場所で同じヘッダー ファイルです。「この行」を最終的なアプリケーションのコードに移動すると、それが機能します....なぜですか? なぜ違うのかさっぱりわかりません。
#include "stdafx.h"
#include <list>
using namespace std;
class someobject
{
public:
someobject()
{
// do some stuff.
theStaticList.push_back(this);
}
void func()
{
printf("Made it!!\n");
}
static list<someobject*> theStaticList;
};
list<someobject*> someobject::theStaticList; //*** This line
someobject global;
int main()
{
someobject initial;
initial.func();
global.func();
list<someobject*>::iterator iter;
printf("\n\nLoop the Static List\n");
for (iter = someobject::theStaticList.begin(); iter != someobject::theStaticList.end (); iter++)
(*iter)->func();
return 0;
}