让我解释一下。在这种方法中,我正在尝试将新项目推送到列表中。
spContainer ObjectsManager::createContainer(QStringList data, QVector2D onMapPosition) {
spContainer new_container (new Container());
new_container->setData(data);
new_container->setPosistion(onMapPosition);
containers.push_back(new_container);
emit containerAdd(new_container->toQVariantMap());
return new_container;
}
spContainer
是一个typedef:
typedef std::shared_ptr<Container> spContainer;
containers
是一个std :: list
class ObjectsManager : public QObject {
...
public:
spContainer createContainer(QStringList data, QVector2D onMapPosition);
...
private:
std::list<spContainer> containers;
};
使用QList
或QVector
时出现同样的错误。
这很奇怪,因为如果我要添加方法新的QList并尝试将指针推入容器......
spContainer ObjectsManager::createContainer(QStringList data, QVector2D onMapPosition) {
spContainer new_container (new Container());
new_container->setData(data);
new_container->setPosistion(onMapPosition);
QList<spContainer> conts;
conts.push_back(new_container);
//containers.push_back(new_container);
emit containerAdd(new_container->toQVariantMap());
return new_container;
}
它会正常工作!
WAT?有什么区别?!有人可以解释一下发生了什么吗?
答案 0 :(得分:0)
我的坏! 问题是我称之为未初始化对象的方法!
修复是:
_objManager = spObjectsManager (new ObjectsManager);
_objManager->createContainer(data);