c++ - Qt - 如何从 const 函数追加到本地列表

标签 c++ qt list constants

我正在使用 Qt 4.7。我有一个类是 QAbstractTableModel 的子类。我需要一个名为 intlist 的本地 QList 来跟踪标题为特定值的任何列。这些 header 存储在名为 headerNames 的 QStringList 中。现在我有这个:

QVariant myTableClass::data(const QModelIndex &index, int role) const
{
  if(headerNames[index.column()] == "TriggerText")
  {
    this->intlist.append(index.column();
  }
  return QVariant;
}

当我尝试构建它时,它给了我错误“C2663:‘QList::append’:2 个重载没有‘this’指针的合法转换”。根据我在网上找到的类似问题的提示,我尝试了几种不同的方法,包括:仅使用 intlist 而不是 this->intlist;将 int 设置为 index.column() 的值,然后在 append 中使用该 int 代替;并创建一个单独的非常量函数来调用附加值。他们都给出了同样的错误。我完全不知道该怎么做。有人可以帮忙吗?谢谢!

最佳答案

如果您绝对需要从 const 成员函数中修改成员,您可以将 mutable 添加到您要修改的成员的声明中。

该成员可能应该是私有(private)的,并且该成员的状态不应影响公开给您类的用户的公共(public)状态,他们希望您的成员函数对该对象没有影响。

参见 this page on MSDN ,或者 Bjarne Stroustrup 的 The C++ Programming Language Fourth Edition 中的第 16.2.9.3 节。 mutable 在 C++11 之前可用。

关于c++ - Qt - 如何从 const 函数追加到本地列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22233353/

相关文章:

c++ - SendInput() 不能正确管理 Alt 代码

c++ - 所有纹理颜色受彩色矩形影响 - OpenGL

c# List<Dictionary<string,string>> 添加唯一字典

python - 关于数组嵌套循环的问题

Java 泛型 - 将函数映射到列表

C++:在 Msys 下使用使用 g++ 和 -m32 选项构建的 c++ 库构建 wxWidgets 项目时出现 ld 不兼容错误

c++ - 与icecc交叉编译时如何设置ICECC_VERSION

c++ - 如何恢复 QMainWindow 的初始 centralwidget?

c++ - QFileDialog (QT 5.2.1/mingw32) 不允许我选择只读文件

c++ - 如何将 VXYModelMapper 与 QStandardItemModel 一起使用?