我正在使用 GUI 庫(Qtitan for Qt)。
在那里我有一個名為的類NavigationViewHeader,我可以通過它訪問它的指標navigationView->header()。
現在我想重新分配指標的內容,但它告訴我(翻譯)
函式“NavigationViewHeader::operator=(const NavigationViewHeader &)”(隱式宣告)”不能被參考(它是一個被洗掉的函式)。
NavigationViewHeader newHeader(navigationView);
NavigationViewHeader* oldHeader = navigationView->header();
*oldHeader = newHeader;
是否可以重新分配該值,或者框架是否可以自行限制?= delete框架類內部沒有函式。
uj5u.com熱心網友回復:
錯誤訊息的措辭有點混亂。NavigationViewHeader不宣告復制賦值運算子,這就是編譯器隱式宣告一個的原因。但是,它的一個基類有一個已洗掉的賦值運算子,所以這會失敗。
我假設NavigationViewHeader繼承QObject自你提到它是一個 Qt GUI。那些不能被復制分配。請參閱檔案中的此處。
QObject 既沒有復制建構式也沒有賦值運算子。這是設計使然。實際上,它們是被宣告的,但是在一個帶有宏 Q_DISABLE_COPY() 的私有部分中。事實上,所有從 QObject 派生的 Qt 類(直接或間接)都使用這個宏來宣告它們的復制建構式和賦值運算子是私有的。推理可以在 Qt 物件模型頁面上關于 Identity vs Value 的討論中找到。
旁注:我認為這部分檔案有點過時了。私有運算子是 C 03 技術。他們可能會更改該宏以洗掉該方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/520134.html
標籤:C qtC 17
上一篇:JetpackComposeAlignment-誤解了alignBy修飾符
下一篇:為什么Qt不能區分連字符和減號?
