我正在使用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
对象。