我正在重构一些我的Qt-cpp代码,并希望确保从公共函数获得的一些QWidgets是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]
文档说明.take-mouseover:
T QHash::take(const Key &key)
...我正在传递一个const Tab *作为键,所以我不明白这个消息。 标头声明是
void setTabWidget(const Tab *t, QWidget* w, bool switchToTab = false);
此外,我想知道我传递给Tab
的{{1}}是否需要始终为常量。
答案 0 :(得分:1)
该方法需要引用,并且您将指针传递给它。只需取消引用指针即可。
QWidget* oldWidget = tabWidgets_.take(*t);
这当然假设Tab与Key
兼容答案 1 :(得分:0)
一旦你将某件事作为const
,你就无法改变它。另外,如果你在类中定义一些const作为const,你必须将它用作const整个程序,这意味着无论如何你都无法改变它。Reading this将帮助你理解const
的概念如何使用它以及何时使用它。