3

preLoadループ内で 2 回ロードされるのを防ぐためにブール値を使用したいクラスがあります。

私はこのようにします:

Sprite::Sprite(std::string& imagefile)
{
 if(!preload){
    if(!texture.loadFromFile(imagefile)){
        exit(2);
    }

    sprite = sf::Sprite(texture);
    width = sprite.getLocalBounds().width;
    height = sprite.getLocalBounds().height;
    preload = true;
 }
}

問題は、ではなくpreload開始するように見えることです。変数は次のようにクラスに設定されます。truefalse

private:
bool preload;

しかし、最初に設定する必要がありますが、ヘッダーでfalsea を割り当てることはできません。最初falseに設定するにはどうすればよいですか?false

4

1 に答える 1

3

static bool を使用して cpp ファイルに設定します。

private:
    static bool preload;

.cpp ファイルで

//file declarations
bool Sprite::preload = false;

//class functions below...

static キーワードは、すべてのオブジェクトがこの同じ変数を共有するようにし、プログラムの全期間にわたって一度だけ関数を呼び出すことができるようにします。

于 2012-11-17T02:24:20.243 に答える