QCache没有方法插入

时间:2018-12-07 13:12:39

标签: c++ qt

我正在尝试使用QCache类,但是缺少方法插入...

SqlTableModel.h

class SqlTableModel : public QSqlTableModel
{
    Q_OBJECT
public:
    Q_INVOKABLE QVariant getValue(QJSValue searchColumn, QJSValue searchValue, QJSValue returnColumn) const;

private:
    QCache <QString, QString> m_cache;
};

sql.cpp ....

QVariant SqlTableModel::getValue(QJSValue columnName, QJSValue columnKey, QJSValue returnColumnName) const
{
    QString cache_key;
    cache_key = columnName.toString() + "_" + columnKey.toString() + "_" + returnColumnName.toString();

    return m_cache.insert //?????????? auto complet=te give me nothing!
}

尝试构建后:

//error: 'this' argument to member function 'insert' has type 'const QCache<QString, QString>', but function is not marked const

//error: no matching function for call to ‘QCache<QString, QString>::insert(const char [10], QString&) const’
//     return m_cache.insert("123123123", cache_key);

我的问题在哪里?

1 个答案:

答案 0 :(得分:1)

您的问题是getValueconst函数,而insert中的QCache不是const

您可以将函数设为非常量,也可以将m_cache标记为mutable,或者为插入和获取创建不同的函数。