0

我正在用 C++ 制作一个 Bubble Pop 游戏,用户点击随机生成的漂浮在屏幕上的气泡(仍在开发中)。为了在这个游戏中使用 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;
};

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

4

2 回答 2

0

您没有使用任何指针,Bubble因此您的析构函数可以保持空白。如果你想重新分配你的Bubble只是这样

Bubble myBubble1;
//use myBubble1
...
myBubble1 = Bubble();
于 2013-05-02T11:21:03.983 回答
0

如果您在这样Bubble的范围内声明 a :

void func()
{
    Bubble b;
}

func()退出作用域后,它将立即被销毁。(RAII)

您需要使用的唯一时间deleteBubble手动分配内存时,您只能对指针执行此操作:

void func()
{
    Bubble* b = new Bubble;

    delete b;
}

如果你想随意删除它,将它声明为指针(std::unique_ptr最好是智能指针)并随意删除。(或smartPointer.reset()

于 2013-05-02T11:21:42.827 回答