C++ 如何检查C++;视觉2010

C++ 如何检查C++;视觉2010,c++,pointers,C++,Pointers,如果我想检查eerste是否指向我得到的任何东西,我在这里遇到了问题 大宗报价 中0x003921c6处未处理的异常 Bank.exe:0xC0000005:访问冲突 读取位置0xCCD0 我有点奇怪,为什么他只是跳过if语句,或者在对象eerste指向空时不停止 Bank::Bank() { LijstElement *eerste = NULL; LijstElement *laatste = NULL; } Rekening * Bank::getRekening(int rekN

如果我想检查
eerste
是否指向我得到的任何东西,我在这里遇到了问题

大宗报价

中0x003921c6处未处理的异常 Bank.exe:0xC0000005:访问冲突 读取位置0xCCD0

我有点奇怪,为什么他只是跳过if语句,或者在对象
eerste
指向空时不停止

Bank::Bank()
{
 LijstElement *eerste = NULL;
 LijstElement *laatste = NULL;
}

 Rekening * Bank::getRekening(int rekNr)
{

 if(NULL != eerste)
 {
  LijstElement *nummer = eerste;
  while(nummer->volgende!= NULL)
  {
   Rekening *een = nummer->getRekening();
   if(een->getRekNr()==rekNr)
    {
     return een;
    }
   else
   {
    nummer = nummer->volgende;
   }
  }
 }
 return NULL;   
}

构造函数中的语法表明
eerste
laatste
不是成员变量(因此在
getRekening
中引用是非法的)

你能把正确的代码包括在你的头文件中吗


编辑:除此之外,看起来您正在尝试使用未初始化的指针。(它不指向任何内容,但也不指向NULL。)

构造函数中的语法表明
eerste
laatste
不是成员变量(因此在
getRekening
中引用是非法的)

你能把正确的代码包括在你的头文件中吗


编辑:除此之外,看起来您正在尝试使用未初始化的指针。(它不指向任何内容,但也不指向NULL。)

我认为您必须进行更改

Bank::Bank()
{
    eerste = NULL;
    laatste = NULL;
}
因为它们可能在类中声明为成员变量,而您将它们声明为局部变量

正如Fred Larson所建议的,您还可以使用初始化列表

Bank::Bank() : eerste(NULL), laatste(NULL)  
{
//whatever else you are planning to do in your constructor
}

我想你必须改变

Bank::Bank()
{
    eerste = NULL;
    laatste = NULL;
}
因为它们可能在类中声明为成员变量,而您将它们声明为局部变量

正如Fred Larson所建议的,您还可以使用初始化列表

Bank::Bank() : eerste(NULL), laatste(NULL)  
{
//whatever else you are planning to do in your constructor
}

eerste和laatste不是银行类的成员变量,而是构造函数的局部变量(即使定义了成员,局部变量也会在构造函数中重写它们-因此实际的成员变量保持未赋值)

我建议使用命名约定(为成员变量添加一个m_u前缀)和一个简单的初始化列表:

class Bank
{
public:     
  Bank() : m_eerste(NULL), m_laatste(NULL)
  {}

  private:
    LijstElement *m_eerste;
    LijstElement *m_laatste;

};

eerste和laatste不是银行类的成员变量,而是构造函数的局部变量(即使定义了成员,局部变量也会在构造函数中重写它们-因此实际的成员变量保持未赋值)

我建议使用命名约定(为成员变量添加一个m_u前缀)和一个简单的初始化列表:

class Bank
{
public:     
  Bank() : m_eerste(NULL), m_laatste(NULL)
  {}

  private:
    LijstElement *m_eerste;
    LijstElement *m_laatste;

};

我为你除掉了星星。你需要的是空指针,而不是它们的值。更好的是,让我们将它们设置为初始值设定项。@Kristo:我想我比你先到了;-)我为你除掉了星星。你需要的是空指针,而不是它们的值。更好的是,让我们将它们设置为初始值设定项。@Kristo:我想我比你先到了;-)您的意思是“隐藏”,而不是“覆盖”。您的意思是“隐藏”,而不是“覆盖”。如果这是VS2010,请使用
nullptr
而不是
NULL
。如果这是VS2010,请使用
nullptr
而不是
NULL