我不想使用指針時,我不必,但這裏的問題:在下面的代碼中,如果我刪除星號,並使level
只是一個object
,當然刪除行level = new Level;
我得到一個運行時錯誤,原因是level
然後被初始化在第一行,在之前initD3D
和init_pipeline
- 設置投影和視圖使用的方法。您看到問題是level
使用了這兩件事,但首先完成後,我得到一個null
指針異常。沒有構造函數的類強制使用指針類型?
這是一個簡單的答案是使用指針的情況嗎?我以前遇到過這個問題,基本上,當一個類類型不接受任何參數時,你基本上會覺得非常煩惱,你基本上是在聲明它的地方初始化它......或者我對這最後一部分錯誤了嗎?
Level* level;
D3DMATRIX* matProjection,* matView;
//called once
void Initialise(HWND hWnd)
{
initD3D(hWnd);
init_pipeline();
level = new Level;
}
我從C#和C#來了,你只是聲明一個名字與線Level level
;參數與否,你仍然需要在某個時候初始化它。
這與'Level'是否具有用戶定義的構造函數,或者構造函數是否帶參數無關。問題是全局變量在'main'輸入之前被初始化。如果您編寫了'Level level(1,2,3);',則會看到完全相同的內容,相應的構造函數將在'initD3D'和'init_pipeline'之前調用。 –