我在C++的那一刻,讓我創造我的3D應用程序定向光線,當我點擊屏幕上建立一個功能。我正在研究x和y的計算,但問題是我在x和y上執行std::cout
,這些值保持不變。如果我刪除了static
這個關鍵字,這個工作正常,但我想保留它作爲一個靜態局部變量,因爲我將多次使用這個函數,那麼究竟是什麼問題或者我究竟做了什麼錯誤,使得它的打印效果相同一直都有價值?C++靜態局部變量不改變價值
繼承人的功能:
void Mouse::GetClickDirection(D3DXMATRIX projMatrix)
{
static POINT mousePoint;
GetCursorPos(&mousePoint);
ScreenToClient(hwnd, &mousePoint);
static float width = (float)backBufferWidth;
static float height = (float)backBufferHeight;
static float x = (2.0f * mousePoint.x/width - 1.0f)/projMatrix(0, 0);
static float y = (-2.0f * mousePoint.y/height + 1.0f)/projMatrix(1,1);
D3DXVECTOR3 origin(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 dir(x, y, 1.0f);
system("CLS");
std::cout << "X: " << x << std::endl;
std::cout << "Y: " << y << std::endl;
}
「我想保持它作爲一個靜態的局部變量,因爲我將使用這個功能很多次」 - 我不完全相信你明白什麼'static'是。你的代碼會做你所期望的,沒有'static'關鍵字,並且你實際上並沒有通過使你的變量變爲靜態來實現任何有用的優化。 – benjymous
爲什麼你認爲使用靜態變量更有效? – Sarien
@Sarien我知道這不像用戶會「注意到」這種差異,但就像我說的那樣,該功能將在程序的整個生命週期中一遍又一遍地使用,所以(至少對我而言)似乎沒有以保持銷燬並創建相同的局部變量:( – Danny