【问题标题】:passing 'const QVariant' as 'this' argument discards qualifiers [-fpermissive]将 'const QVariant' 作为 'this' 参数传递会丢弃限定符 [-fpermissive]
【发布时间】:2017-06-10 13:06:29
【问题描述】:

我有一个这样的struct

struct StorageConfig {
    QString id;
    QString description;
    QVariant value;
};

我想将QLineEdit 的值分配给我的StorageConfig.value 的值:

for (int j=0; j<parameters.count(); j++) {
    if (parameters.at(j).id == id) {
        parameters.at(j).value = QVariant(myQLineEdit->text());
        break;
    }
}

parametersQList&lt;StorageConfig&gt;

但是我收到了这个错误:

将 'const QVariant' 作为 'this' 参数传递会丢弃限定符 [-fpermissive]

            parameters.at(j).value = QVariant(myQLineEdit->text());

                                   ^

我完全理解这个问题:myQLineEdit-&gt;text() 返回一个const,我不能将const 分配给non-const 变量。没关系。

但我的问题是……我不知道如何解决这个问题。 我无法删除text()const 状态,因为它是一个内部Qt 方法。 而且我不想将我的StorageConfig.value 更改为const,因为我希望以后能够修改它。

我只想在我的QString 上删除这个const。但我不知道怎么做。 我尝试过使用std::remove_const 并将text() 存储在临时的QString 中,但它没有用。 所以,我没有想法。

有什么帮助吗?

谢谢。

【问题讨论】:

  • parameters常量 QList&lt;StorageConfig&gt; 吗?还是对 constant 对象的引用?请尝试创建Minimal, Complete, and Verifiable Example 并展示给我们。
  • 猜想:你在一个 const 函数中赋值。

标签: c++ qt c++11


【解决方案1】:

问题是QList::at() 返回const T &amp;。请改用QList::operator[]parameters[j].value = QVariant(myQLineEdit-&gt;text());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多