2016-02-02 33 views
1

匹配运营商>>我新的C++,我有一些问题,使用2个运营商的predefination。没有在QTCreator

一段时间后,我做的第一个工作,不知怎么的,但我仍然得到一个错误,当我尝试用第二个(>>)函数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; 
    } 

回答

0

在C++中,this是一个指针—型SearchObject*(星是 “指针”)。所述operator>>期待一个参考— SearchObject&类型(和号为“参考”)。尝试

out >> *this; 
fromStream

(注意this前明星)。 *thisthis点,所以应该匹配SearchObject&的对象。

+0

非常感谢!我的问题现在完全解决了! – Karli