3

我有一个类,我想使用一个preLoad布尔值来防止它在我的循环中被加载两次。

我这样做:

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似乎开始true而不是false。变量在类中设置如下:

private:
bool preload;

但是,我需要将它设置为falsefirst 但它不允许我false在标题中为其分配 a 。我该怎么做才能将其设置为false最初?

4

1 回答 1

3

使用静态布尔并将其设置在 cpp 文件中。

private:
    static bool preload;

在 .cpp 文件中

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

//class functions below...

static 关键字将使所有对象共享同一个变量,允许您在程序的整个生命周期中只调用一次函数。

于 2012-11-17T02:24:20.243 回答