0

Bada の静的ポインターと変数に問題があります。最初に、シングルトン クラスを作成しようとしましたが、次のようなことを行いました: ヘッダー:

    static Session *getInstanceOf();
private:
    static Session *instance;

ソース:

Session* Session::getInstanceOf(){
    if (instance==NULL){
        instance=new Session();}
    return instance;
}

しかし、アプリケーションはエラー メッセージなしでクラッシュしました。次に、静的クラスフィールドを作成して、次のように返そうとしました:

ArrayList* User::GetUniv()
{
    return &Universities;
}

しかし、それは同じ結果でした。なぜそうなのか、何か分かりますか?助けてくれてありがとう。

4

3 に答える 3

1

あなたはこのようにすることができます

ArrayList* User::GetUniv()
{
    static Universities;
    return &Universities;
}
于 2012-04-25T15:34:10.663 に答える
1

Session::instance実装ファイルで初期化していますか?このような:

Session* Session::instance = NULL;

編集:static初期化順序の大失敗も考慮してください。

于 2012-04-25T15:30:17.257 に答える
0

これはやや危険です:

if (instance==NULL){
    instance=new Session();}

インスタンスが NULL に初期化されていないように見えるためです。ポインターは、初期化されていないときにガベージ値を持つ場合があります。

于 2012-04-25T15:32:59.170 に答える