我想創建一個QScopedPointer的void與自定義刪除器來正確管理來自C庫(它只提供void *到其內部數據結構)的資源。 然而,當我嘗試實例化一個void QScopedPointer,我得到這個錯誤:虛空指針到智能指針
/Library/Frameworks/QtCore.framework/Headers/qscopedpointer.h:104:14:
error: cannot form a reference to 'void'
inline T &operator*() const
(from Clang)
或本:
/Library/Frameworks/QtCore.framework/Headers/qscopedpointer.h:104:
error: forming reference to void
(from GCC)
我想專門QScopedPointer或編寫與定製刪除一個基本範圍的指針,但在這兩種情況下,我最終都重複了與QScopedPointer中完全相同的代碼。
有什麼辦法可以擺脫(或專門化)該特定功能,以便編譯器不再抱怨了嗎?
我會寫一個自定義scoped-ptr-to-void並將實現委託給QScopedPointer-to-char。 –
創建一個虛擬類型'struct MYDUMMY {}',將'void *'強制轉換爲'MYDUMMY *',並專注於此。問題將消失。您可能想要爲C函數創建內聯包裝,因此一切都很好。 – Ben
通常你要麼知道你正在存儲的數據類型(並且可以使用該類型的指針,而不是void),或者不擁有指針(然後範圍指針沒有識別)。你確定你需要'void *'的範圍指針嗎? – Lol4t0