gpt4 book ai didi

c++ - QTCreator 中的运算符>>不匹配

转载 作者:太空宇宙 更新时间:2023-11-04 13:21:17 26 4
gpt4 key购买 nike

我是 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*(星号是“指针”)。 operator>> 需要一个引用 — 类型 SearchObject&(& 符号表示“引用”)。尝试

out >> *this;

fromStream 中(注意 this 之前的星号)。 *thisthis 指向的对象,因此应该匹配 SearchObject&

关于c++ - QTCreator 中的运算符>>不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com