我重構了一些Qt-cpp代碼,並希望確保從公共函數獲得的一些QWidgets是const(不可更改)。const參數傳遞:無效轉換
// class Tabbar:
const Tab* activeTab(){
return this->activeTab; // do I need a const here?
}
// class Tabwidget (Tabbar with stacked widget):
void TabWidget::setTabWidget(const Tab2* t,
QWidget *w, bool switchToTab)
{
QWidget* oldWidget = tabWidgets_.take(t); // <-- error
if (oldWidget){
stackedWidget_->removeWidget(oldWidget);
delete oldWidget;
}
tabWidgets_.insert(t,w); // <-- error
stackedWidget_->addWidget(w);
// ...
}
的錯誤是:
invalid conversion from "const Tab*" to "Tab*" [-fpermissive]
的文檔上。取-鼠標懸停說:
T QHash::take(const Key &key)
...和我傳遞一個const選項卡*爲重點,所以我不明白這個消息。 頭聲明
void setTabWidget(const Tab *t, QWidget* w, bool switchToTab = false);
而且我想知道如果我傳遞給setTabWidget
需求Tab
爲const始終。
很好地兼容的,'t'是一個指針,'QHash :: take'需要一個參考,所以東西得是錯的。 – Downvoter
如果我在方法聲明中刪除了「const」,它就會起作用。所以傳遞指針沒有問題。 – user2366975