2011-10-23 77 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(); 

我可以在同一时间建议您头文件)。