QVector operator []没有成员值

时间:2018-01-16 12:51:15

标签: c++ qt operators const qvector

我正在尝试将数据保存到成员值similarly to this

我有一个包含成员变量的QVector对象。禁止使用.at(),因为我尝试转换const,.value()不保存更改,因为它只是一个实例。

我尝试使用[]运算符返回对象的非const引用,以便更改成员变量的值我如何得到错误

class QVector<Object>' has no member named 'value'
                 objects[i].value = newValue;
                           ^

以下是使用缩短的类导致错误的代码段:

void Class::linkValueToObject(QVector<Object>* objects, QStringList* data )
{
    for( int i = 0; i < object->size(); ++i )
        for( int j = 0; j < data->size(); ++j )
            if( conditionMet )
            {
                newValue = data.at(j)
                objects[i].value = newValue //Line of error
                break;
            }
}

class Object
{
public:
    QString value;    
}

导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:7)

如果要将新值设置为value,实际上并不是取消引用objects。您需要使用*运算符才能执行此操作。

void Class::linkValueToObject(QVector<Object>* objects, QStringList* data )
{
    for( int i = 0; i < object->size(); ++i )
        for( int j = 0; j < data->size(); ++j )
            if( conditionMet )
            {
                newValue = data.at(j)
                (*objects)[i].value = newValue //Line of error
                break;
            }
}