gpt4 book ai didi

c++ - const 参数传递 : invalid conversion

转载 作者:行者123 更新时间:2023-11-28 05:57:02 25 4
gpt4 key购买 nike

我正在重构我的一些 Qt-cpp 代码,并希望确保从公共(public)函数获得的一些 QWidgets 是常量(不可更改)。

// 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* 作为键,所以我不理解该消息。 header 声明是

void setTabWidget(const Tab *t, QWidget* w, bool switchToTab = false);

此外,我想知道我传递给 setTabWidgetTab 是否需要始终为 const。

最佳答案

该方法需要一个引用,而您正在向它传递一个指针。只是取消引用指针。

QWidget* oldWidget = tabWidgets_.take(*t);

这当然是假设 Tab 与 Key 兼容

关于c++ - const 参数传递 : invalid conversion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33963830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com