2011-12-16 129 views
2

我正在嘗試以下操作,並在兩個日誌語句之間獲得模擬器崩潰。有什麼不對?通過靜態成員函數初始化C++中的非常量靜態成員變量

protected: 
    static int maxSize; 
public: 
    static void setFontSizeRange(int max) { 
     Log("here %d->%d", max, maxSize); 
     maxSize = max; 
     Log("ok"); 
    } 

我可以得到日誌重現參數,但它輸出的靜態成員之前崩潰(所以上面,同時它指的是不會工作的第一個日誌)。

謝謝。

+0

哪個模擬器?平臺?環境? – 2011-12-16 21:35:17

+0

您是否在某處定義了靜態成員? (注意定義和聲明之間的區別)。 – Griwes 2011-12-16 21:36:13

回答

2

您應該定義靜態成員。

class Something 
{ 
protected: 
    static int maxSize; 
public: 
    static void setFontSizeRange(int max) { 
     Log("here %d->%d", max, maxSize); 
     maxSize = max; 
     Log("ok"); 
    } 
}; // class declaration ends here... 

int Something::maxSize = 0;