我是C++新手,雖然之前我曾經使用過C和Java。C++連續檢查對象變量的值會得到不同的結果嗎?
在下面的代碼,我:
- 定義多邊形類。現在它只有1個變量:爲NumPoints
- 創建一個全局指針指向一個多邊形對象是空
定義處理程序click事件,而如果對象存在,只是打印爲NumPoints的價值。如果不是這樣,它會創建它並設置爲NumPoints的值爲0
//defining polygon class class polygon{ public: int numpoints; }; //create a global pointer that's uninitialized static polygon *current = NULL; //define a click handler. void leftClick(int x, int y){ if (current==NULL){ polygon newpoly; current = &newpoly; current->numpoints = 0; printf("created new polygon\n"); printf("%i points\n", (*current).numpoints); }else{ printf("polygon exists\n"); printf("%i points\n", (*current).numpoints); } }
第一次點擊後,該程序將打印
created new polygon
0 points
預期。然而,第二次及以後點擊之後,它打印
polygon exists
-1567658064 points
或者其他一些看似隨機數。有人知道這裏發生了什麼?爲什麼價值不停留在0?任何幫助表示讚賞。
這是非常糟糕的建議。創建浮動和非託管指針不是正確的解決方案。 –
這是一個可行的解決方案,儘管它不是理想的 – Telokis
在給初學者提供建議時我會小心謹慎。你應該針對提供好的建議,而不是僅僅讓有用的東西。至少提到這是一個不好的解決方案,因爲這個和那個,一個好的解決方案是這樣。在你的情況下,如果你想提一個好的解決方案,建議把它包裝在一個類中,並讓析構函數來處理刪除操作,或者在類中使用智能指針。 –