2012-11-17 66 views
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; 

但是,我需要將其設置爲false第一,但它不會讓我一個false分配給它的頭。我能做些什麼將它初始設置爲false

+2

看起來你想要一個靜態成員。 – chris

+0

有很多潛在的解決方案。請顯示你提到的「循環」,這樣我們可以有一些上下文。 – zdan

+0

@zdan不明白爲什麼看到循環改變任何東西=/ – Sir

回答

3

使用靜態布爾並將其設置在cpp文件中。

private: 
    static bool preload; 

在.cpp文件

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

//class functions below... 

static關鍵字將使所有對象共享這同一個變量,讓您只需一次調用函數的程序的整個生命週期。

+0

這是否意味着我可以將它設置爲false之前我調用構造函數? – Sir

+0

是的,把我在我的帖子中的作業放在你的所有lib聲明下面。 –

+0

我有點困惑我的聲明下面是什麼意思?你的意思是設置與課堂相關的對象的腳本嗎? – Sir