如果我想检查eerste
是否指向我
块引用
0x003921c6处的未处理异常 Bank.exe:0xC0000005:访问冲突 读取位置0xccccccd0。
我有点想知道为什么他只是跳过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;
}
答案 0 :(得分:10)
我认为你必须改变
Bank::Bank()
{
eerste = NULL;
laatste = NULL;
}
因为它们可能在您的类中声明为成员变量,并且您将它们声明为局部变量。
正如Fred Larson所提议的,您也可以使用初始化列表。
Bank::Bank() : eerste(NULL), laatste(NULL)
{
//whatever else you are planning to do in your constructor
}
答案 1 :(得分:6)
我建议使用命名约定(向成员变量添加m_前缀)和一个简单的初始化列表:
class Bank
{
public:
Bank() : m_eerste(NULL), m_laatste(NULL)
{}
private:
LijstElement *m_eerste;
LijstElement *m_laatste;
};
答案 2 :(得分:1)
构造函数中的语法表明eerste
和laatste
不是成员变量(因此在getRekening
中引用是非法的。)
您能否发布正确的代码,包括头文件中的部分?
编辑:除此之外,看起来你正试图使用未初始化的指针。 (它指向什么,但也不是NULL。)