c ++ QVector / Vector问题... const ...丢弃限定符

时间:2014-08-15 19:16:21

标签: c++ qt

我设置了一个名为tagToken的类。

它有setter函数,一个是void setString(QString)

我已将其定义/声明为

.h文件

void setString(QString string);

Private:

    QString stringOfTagToken ;

.cpp文件

void tagToken::setString(QString string)
{
    stringOfTagToken = string;
}

当我尝试运行此代码时:

    if (linePosition == 1)
    {
        QVector<tagToken> temp(0);

        //errors
        //temp.at(0).setString(line);

        temp.at(0).setString("test");

        //tags.at(0).setString(line);

        //tags.push_back();

        tagTokenCounter++;
    }

我收到此错误:

C:\ Dev \ DiffMatchPatch \ diffmatchpatch.cpp:316:错误:将'const tagToken'作为'this tagToken :: setString(QString)'的'this'参数传递'丢弃限定符[-fpermissive]              temp.at(0).setString( “测试”);

2 个答案:

答案 0 :(得分:5)

QVector的{​​{3}}函数将数据返回为const。如果您不想(意外)更改矢量数据,请使用at,或一般operator[]

temp[0].setString("test");

答案 1 :(得分:3)

QVector :: at()向你的数据返回一个const ref,你不能在那个上调用像setString这样的非const方法

来自http://qt-project.org/doc/qt-4.8/qvector.html#at

const T & QVector::at ( int i ) const
Returns the item at index position i in the vector.
i must be a valid index position in the vector (i.e., 0 <= i < size()).

考虑使用operator []而不是