我正在尝试让一个名为Cube的类具有一个属性,该属性是另一个多维数据集的实例。
这是我的Cube.cpp的重要部分:
bool hasSon = false;
Cube* son;
Cube::Cube()
{
}
void Cube::setSon(Cube* s)
{
son = s;
hasSon = true;
}
void Cube::draw() {if(hasSon) {son->draw()}}
这是我的cube.h:
class Cube
{
public:
Cube();
bool hasSon;
Cube* son;
void setSon(Cube* son);
void draw();
};
我正在实例化多维数据集并使用setSon();像这样:
Cube* base = new Cube();
Cube* base2 = new Cube();
base->setSon(base2);
我遇到的问题是,即使我从不调用setSon();
,我也会遇到内存错误的情况,设置son
属性的正确方法是什么?
这是我的错误:
Exception thrown at 0x00DA3716 in CG_Demo.exe: 0xC0000005: Access violation reading location 0xCDCDCDF1.
Unhandled exception at 0x00DA3716 in CG_Demo.exe: 0xC0000005: Access violation reading location 0xCDCDCDF1.
答案 0 :(得分:0)
您不需要hasSon
。您可以初始化指向nullptr
的指针,并使用它来测试是否设置了Cube*
。由于您提供的代码不完整,因此很难说出为什么会出错,但这可以解决问题,
class Cube
{
public:
Cube();
//bool hasSon;
Cube* son;
void setSon(Cube* son);
void draw();
};
Cube::Cube() : son(nullptr)
{}
void Cube::setSon(Cube* s)
{
son = s;
}
void Cube::draw()
{
if(son)
son->draw();
}
int main()
{
Cube* base = new Cube();
Cube* base2 = new Cube();
base->setSon(base2);
base->draw();
}