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 之前的星号)。 *thisthis 指向的对象,所以应该匹配一个 SearchObject&.