我正在用C ++制作一个Bubble Pop游戏,用户可以点击随机生成的Bubbles,它们会在屏幕上浮动(仍处于开发状态)。为了在这个游戏中使用OpenGl和Glut,我发现最好让我的Bubbles全球化。我有一个空白的析构函数但我不知道如何删除Bubble的内容并创建一个新的。我尝试使用动态分配,但它没有任何区别。如何删除Bubble的内容并创建一个新内容?
这是一个必要的片段:main.cpp
Bubble myBubble1; void display(void) {
delete myBubble1;//error "cannot delete type Bubble"
}
我的析构函数在这里:
class Bubble {
public:
//default constructor
Bubble()
{
radius=(rand() % 100 )+1;
speed = rand() % 500 ;
xVal = rand() % 480;
yVal= -14;
isLive=true;
}
~Bubble()
{
}
private:
float radius;
float speed;
float xVal;
float yVal;
bool isLive;
};
当我不尝试删除任何内容时,代码运行正常。我可以运行无限循环气泡
答案 0 :(得分:0)
您没有在Bubble
中使用任何指针,因此您的析构函数可以保持空白。如果您想重新分配Bubble
,那么
Bubble myBubble1;
//use myBubble1
...
myBubble1 = Bubble();
答案 1 :(得分:0)
如果你在这样的范围内声明Bubble
:
void func()
{
Bubble b;
}
退出func()
的范围后,它将立即销毁。 (RAII)
您需要使用delete
的唯一时间是手动为Bubble
分配内存时,您只能对指针执行此操作:
void func()
{
Bubble* b = new Bubble;
delete b;
}
如果要随意删除它,请将其声明为指针(首选智能指针,如std::unique_ptr
)并随意删除。 (或smartPointer.reset()
)