Const参数传递:转换无效
Const parameter passing: invalid conversion
我正在重构一些Qt-cpp代码,并希望确保从公共函数中获得的一些QWidget是常量(不可更改)。
// 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 Tab*作为键,所以我不理解该消息。标头声明为
void setTabWidget(const Tab *t, QWidget* w, bool switchToTab = false);
此外,我想知道我传递给setTabWidget
的Tab
是否需要始终为常量。
该方法需要一个引用,而您正在向它传递一个指针。只是取消引用指针。
QWidget* oldWidget = tabWidgets_.take(*t);
这当然是假设Tab与Key 兼容
一旦你将某个东西命名为const
,你无论如何都无法更改它。此外,如果您将类中的某些内容定义为const,则必须将其用作const整个程序,这意味着无论怎样都无法更改它。阅读这篇文章将帮助您理解const
的概念——如何使用它以及何时使用它
相关文章:
- C++ PTHREADS - 无效转换无效*(*)()到无效*(*)(无效*)
- is_same和variadic模板编译时错误无效转换
- 如何将常量无效*转换为istream?
- 无效* 转换获得意外输出
- 无法确定为什么函数调用中从 char* 到 char 的无效转换
- 在这个简单函数中从'char'到'const char*'的无效转换
- C++从 'const char*' 到 'char*' Arduino Uno 的无效转换
- 如何修复C++中的"错误:从'int'到'const char*'[-fallowive]的无效转换?
- C 错误:从(基类模板)到子类的无效转换
- 如何将常量无效*转换为无符号字符*
- 函数模板中的无效转换错误,返回值取决于其泛型类型
- 常量正确性编译错误到模板函数中的无效转换错误
- 从"char"到"const char*"的无效转换[-fpermissive](idk why)
- 从“ void*”到“ pthread_t*”的无效转换
- 当函数调用时,试图阻止数组更改时发生无效转换错误
- 使用基类中定义的函数返回指向派生类实例的指针时发生无效转换错误
- C++从字符到常量字符*的无效转换
- ALL_OF从'char'到'const char*'的无效转换 [-允许]
- C和C++上的无效转换错误
- C++ 在模板专用化中从 strcmp() 中的 'char' 到 'const char*' 的无效转换