次のようにクラスを記述したプログラムがあります。
.h ファイル
typedef map<string, int> stringMap;
class SampleClass{
public:
void setup();
void update();
void draw();
private:
static stringMap _someMap;
static stringMap someMapInitializer();
};
.cpp ファイル
//Initializer for static var
stringMap SampleClass::_someMap = someMapInitializer();
stringMap SampleClass::someMapInitializer(){
_someMap["something"] = 1;
return _someMap;
}
しかし、上記を実行すると、プログラムの実行時に「Program received signal EXC_BAD_ACCESS」エラーが発生し始めます(ただし、正常にコンパイルされます)
上記の関数は次のように変更されます。
stringMap SampleClass::someMapIntializer(){
map<string, int> m;
m["somehting"] = 1;
return m;
}
正常に動作します。最初のケースの何が問題になっていますか? 静的関数で静的メンバー変数にアクセスできませんか?