C++如何将同一类的实例作为属性
C++ How to have an instance of the same class as an attribute?
我正在尝试让一个名为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()}}
这是我的立方体。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.
您不需要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();
}
演示
相关文章:
- 从C++实例化QML
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 如何创建一个空的全局类并在启动时实例化它
- C++如何将同一类的实例作为属性
- 如何在C++中将类的实例完全重新分配给同一类的另一个实例(然后删除原始对象)?
- C++采用同一类实例的类方法
- 一类应管理其实例化对象
- 从另一类获得与属性相同的类实例
- 访问多个源文件中的同一类实例
- 防止同一类的实例调用公共功能(C )
- 为什么我不能在类定义中实例化同一类的对象
- 使用OOP,当您有一个类的实例作为另一类的属性时,如何可能只在第二个类中实例化它
- c++返回同一类的一个实例
- C++,同一类中类的实例,类中的父/子结构
- c++程序中如何在类中创建同一类的实例
- 如何使用同一类的成员函数删除当前类实例