删除游戏中的全局对象。(C ++)

时间:2013-05-02 11:18:30

标签: opengl global-variables destructor glut

我正在用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;
};

当我不尝试删除任何内容时,代码运行正常。我可以运行无限循环气泡

2 个答案:

答案 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()