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和刪除對象
- 6. QPointer檢查是否爲NULL?
- 7. Qt的QHash迭代
- 8. Qt4 QHash哈希碰撞?
- 9. 的Qt 5.1 qHash錯誤
- 10. QHash中的長度鍵
- 11. qvariant作爲qhash中的鍵
- 12. 使用QPointer和QObject ::與C++連接11
- 13. QPointer可以作爲std :: map的關鍵
- 14. 用於訪問對象方法的QPointer
- 15. 是否有QPointer專用於boost :: bind
- 16. QHash - hot得到一個隨機密鑰和值
- 17. 如何在Qhash中使用Qmap?
- 18. 從QHash中刪除元素的範圍
- 19. 如何在Qhash中存儲Qfile
- 20. 重載'qHash(const double&)'調用不明確
- 21. QList/QHash存儲抽象元素
- 22. Qt的QString的 「鍵值」 取代從QHash
- 23. 跨計算機的qHash是否一致?
- 24. 通過插入順序循環QHash
- 25. QHash存儲大量的數據
- 26. 使用QGraphicsItem作爲QHash的密鑰
- 27. QHash無法將參數1從'class QHash <class QDomElement,class QDomElement> :: const_iterator'轉換爲':: iterator'
- 28. 使用qt創建全局QHash變量C++
- 29. 使用QStrings作爲鍵的QHash查找的速度
- 30. 如何在單個文件中序列化QHash和QMap?
我應該說代碼編譯,但我得到奇怪的錯誤。 – user635818