2011-10-23 80 views
0
class Register 
{ 
private: 
     DWORD ax,dx,cx,bx; // POH 
     DWORD bp,sp; 

     DWORD flag, ip; 
public: 
     //==================================================== 
     Register() 
     { 
      ax = 0x0; 
      dx = 0x0; 
      cx = 0x0; 
      bx = 0x0; 

      bp = 0x0; 
      //memset(&this->sp,0,sizeof(sp)); 
      sp = 0x0; 

      flag = 0x0; 
      ip = 0x0; 
     } 
     //==================================================== 
     ~Register() 
     { 
     } 
     //==================================================== 
     void setAx(DWORD d) 
     { 
     ax=d; 
     } 
     //==================================================== 
     DWORD getSp() 
     { 
      return sp; 
     } 

}*PReg; 

爲什麼函數getSp();給出訪問衝突錯誤?類訪問衝突C++

+0

問題不在於此代碼中,而是在呼叫方。發佈代碼 –

+0

void push(DWORD buf) DWORD d = PReg-> getSp(); stack [d] = buf; PReg-> incSp(); } – Hakon89

+0

它在這裏工作,但當我這樣做: InstList-> Lines-> Add(PStack-> pop()); // InstList - TMemo – Hakon89

回答

0

您忘記了實例化您的班級。你已經創建了一個變量,它是一個指向類Register的指針,但是你沒有實例化它。

你得到的是一個指針,它是null或指向一些隨機內存位置,並且你假定它指向你的類的實例。所以當你試圖訪問任何成員變量時,你實際上正在訪問你無法訪問的內存位置。

你需要做的是創建類的新實例:您從類原型移動變量聲明遠(我假設寓於

PReg = new Register(); 

我可以在同一時間建議您頭文件)。