0

次のようにクラスを記述したプログラムがあります。

.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;
}

正常に動作します。最初のケースの何が問題になっていますか? 静的関数で静的メンバー変数にアクセスできませんか?

4

2 に答える 2