我正在使用Qt开发游戏。
我的角色/对象存储在我的模型类中(我尝试遵循MVC模型)。
我创建了一个包含每个对象的QMap:
QMap<int, Safe*> *safes;
QMap<int, Mushroom*> *mushroom;
QMap<int, Floor*> *floors;
但是然后我想在 Controller 中检索所有这些QMap并将其从 Controller 发送到View的paintEvent()类。
有没有办法像这样将QMap存储在QList中:
QList<QMap<int, void*>>
然后施展呢?我正在寻找一种从单个对象访问这些QMap的方法。
谢谢您的帮助 !
最佳答案
您可以使用结构将它们 bundle 在一个对象中:
struct Maps
{
QMap<int, Safe*> *safes;
QMap<int, Mushroom*> *mushroom;
QMap<int, Floor*> *floors;
};
尽管拥有指向QMap的指针是有效的,但是如果您不需要保持指向它的指针,那么我建议您不要这样做。
struct Maps
{
QMap<int, Safe*> safes;
QMap<int, Mushroom*> mushroom;
QMap<int, Floor*> floors;
};
这样,您就不必担心堆分配/释放。
如果您具有支持C++ 11的编译器,则可以使用std::tuple将项目分组在一起。
std::tuple<QMap, QMap, QMap> maps (safes, mushroom, floors);