0
A
回答
3
QPointer只能与QObject子类一起使用。因此它不能与QHash或QStringList一起使用,因为它们都不是QObject的。如果上面的代码为你编译,那可能是因为你没有使用pHash?甚至初始化这样的QPointer,例如
QPointer<QHash<QString, QString> > foo(new QHash<QString, QString>());
给出类似以下(GCC)的错误:
error: cannot convert ‘QHash<QString, QString>*’ to ‘QObject*’ in initialization
如果你真的需要(智能)指针容器,尽量QSharedPointer,不需要所包含的对象是任何具体类型。 虽然通常在堆栈上创建容器,但在堆上创建容器在几乎所有情况下都是单向的并且是不必要的。 Qt的容器是implicitly shared,因此复制它们很便宜。
+0
+1用于发现'QPointer'只能与'QObject'一起使用。对于'QSharedPointer'替代品+1。而+1用于发现容器隐式共享:)。 –
+0
是的,这是当我尝试使用pHash我得到的错误。非常感谢您的好回答和替代方案。 – user635818
相关问题
- 1. 无法将QHash Seralize到DataStream
- 2. 序列化QHash到QByteArray
- 3. 抽象基类QPointer
- 4. QHash的QVectors
- 5. QPointer检查是否为NULL?
- 6. QPointer和删除对象
- 7. Qt4 QHash哈希碰撞?
- 8. 的Qt 5.1 qHash错误
- 9. qvariant作为qhash中的键
- 10. QHash中的长度键
- 11. 是否有QPointer专用于boost :: bind
- 12. QPointer可以作为std :: map的关键
- 13. 用于访问对象方法的QPointer
- 14. QHash - hot得到一个随机密钥和值
- 15. QList/QHash存储抽象元素
- 16. Qt的QString的 “键值” 取代从QHash
- 17. 通过插入顺序循环QHash
- 18. 从QHash中删除元素的范围
- 19. 使用QGraphicsItem作为QHash的密钥
- 20. 重载'qHash(const double&)'调用不明确
- 21. 如何在Qhash中使用Qmap?
- 22. 跨计算机的qHash是否一致?
- 23. QHash无法将参数1从'class QHash <class QDomElement,class QDomElement> :: const_iterator'转换为':: iterator'
- 24. 为什么Qt的qHash()对std :: shared_ptr有重载?
- 25. 如何为QSet <SomeClass*>容器写qHash?
- 26. 使用QStrings作为键的QHash查找的速度
- 27. QHash迭代器示例 - 运算符<<不匹配?
- 28. 如何更新特定密钥的QHash值?
- 29. 使用qt创建全局QHash变量C++
- 30. 如何在单个文件中序列化QHash和QMap?
我应该说代码编译,但我得到奇怪的错误。 – user635818