我正在使用Allegro 5框架。当我需要创建事件队列时,我必须调用“ al_create_event_queue”并检查错误,然后销毁它“ al_destroy_event_queue”。由于我必须为要创建的每个对象使用相同的机制,因此这很无聊。

我的问题是:有一种方法可以将结构“移植”到类,以便my_event_queue的构造函数实际调用“ al_create_event_queue”,而析构函数调用“ al_destroy_event_queue”?
如果不是,我该如何跟踪这些函数创建的对象,以便在销毁“游戏”主处理程序类时将其自动删除?

最佳答案

当然,您可以...只需将代码创建在构造函数中,将代码删除在析构函数中。

struct MyQueue {
  MyQueue() : queue(al_create_event_queue() { }
  ~MyQueue() { al_destroy_event_queue(queue); }

  ALLEGRO_EVENT_QUEUE* queue;

private:
  MyQueue(const MyQueue&);
  MyQueue& operator =(MyQueue);
};


请注意,您不能做太多的事情来包装这些类型...您在Allegro代码中大量传递了这些指针,以至于您基本上必须向世界公开底层的queue对象。

10-07 14:24