QTCreator 中的运算符>>不匹配
No match for operator>> in QTCreator
我是 C++ 新手,在使用 2 个运算符的预定义时遇到了一些问题。
一段时间后,我以某种方式使第一个工作正常,但当我尝试在函数 fromStream 中使用第二个 (>>) 时,我仍然遇到错误,尽管我在下面对其进行了预定义。
错误是:
core/src/SearchObject.cpp:55: error: no match for 'operator>>' (operand types are 'QDataStream' and 'SearchObject*')
out >> this;
我觉得我的逻辑有问题,我很困惑。
void SearchObject::toStream(QDataStream in) {
in << this;
}
void SearchObject::fromStream(QDataStream out) {
out >> this;
}
在这里你可以看到更多的代码:
SearchObject::SearchObject() {
}
QDataStream& operator >>(QDataStream &in, SearchObject &searchObject) {
//read object from stream
QString medium;
int mediumIndex;
Annotation *ann = new Annotation("", "");
QRect *roi;
QString source;
//skip opening bracket
in.skipRawData(1);
in >> medium;
searchObject.setMedium(medium);
//skip coma
in.skipRawData(2);
in >> mediumIndex;
searchObject.setMediumIndex(mediumIndex);
in.skipRawData(2);
in >> *ann;
searchObject.setAnnotation(ann);
in.skipRawData(2);
in >> *roi;
searchObject.setROI(roi);
in.skipRawData(2);
in >> source;
searchObject.setSourceDataset(source);
in.skipRawData(1);
return in;
}
QDataStream& operator <<(QDataStream &out, SearchObject &searchObject) {
//write object to stream
out << "(" << searchObject.getMedium() << ", "
<< searchObject.getMediumIndex() << ", "
<< searchObject.getAnnotation() << ", "
<< searchObject.getROI() << ", "
<< searchObject.getSourceDataset() << ")";
return out;
}
在 C++ 中,this
是一个指针 — 类型 SearchObject*
(星号是 "pointer")。 operator>>
需要一个引用 — 输入 SearchObject&
("reference" 的符号)。尝试
out >> *this;
在 fromStream
中(注意 this
之前的星号)。 *this
是 this
指向的对象,所以应该匹配一个 SearchObject&
.
我是 C++ 新手,在使用 2 个运算符的预定义时遇到了一些问题。
一段时间后,我以某种方式使第一个工作正常,但当我尝试在函数 fromStream 中使用第二个 (>>) 时,我仍然遇到错误,尽管我在下面对其进行了预定义。 错误是:
core/src/SearchObject.cpp:55: error: no match for 'operator>>' (operand types are 'QDataStream' and 'SearchObject*') out >> this;
我觉得我的逻辑有问题,我很困惑。
void SearchObject::toStream(QDataStream in) {
in << this;
}
void SearchObject::fromStream(QDataStream out) {
out >> this;
}
在这里你可以看到更多的代码:
SearchObject::SearchObject() {
}
QDataStream& operator >>(QDataStream &in, SearchObject &searchObject) {
//read object from stream
QString medium;
int mediumIndex;
Annotation *ann = new Annotation("", "");
QRect *roi;
QString source;
//skip opening bracket
in.skipRawData(1);
in >> medium;
searchObject.setMedium(medium);
//skip coma
in.skipRawData(2);
in >> mediumIndex;
searchObject.setMediumIndex(mediumIndex);
in.skipRawData(2);
in >> *ann;
searchObject.setAnnotation(ann);
in.skipRawData(2);
in >> *roi;
searchObject.setROI(roi);
in.skipRawData(2);
in >> source;
searchObject.setSourceDataset(source);
in.skipRawData(1);
return in;
}
QDataStream& operator <<(QDataStream &out, SearchObject &searchObject) {
//write object to stream
out << "(" << searchObject.getMedium() << ", "
<< searchObject.getMediumIndex() << ", "
<< searchObject.getAnnotation() << ", "
<< searchObject.getROI() << ", "
<< searchObject.getSourceDataset() << ")";
return out;
}
在 C++ 中,this
是一个指针 — 类型 SearchObject*
(星号是 "pointer")。 operator>>
需要一个引用 — 输入 SearchObject&
("reference" 的符号)。尝试
out >> *this;
在 fromStream
中(注意 this
之前的星号)。 *this
是 this
指向的对象,所以应该匹配一个 SearchObject&
.