我设置了一个名为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( “测试”);
答案 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 []而不是