에서 "<<"연산자를 오버로딩 오류가 나는 내가 QHash> 내 클래스에 대한 < < 연산자를 만들어QT : Qdatastream
class budget
{
float transportation, grocery, food, stationery;
QString key;
public:
//input output functions here.
};
클래스를 가지고있다.
QDataStream &operator <<(QDataStream &stream, budget &myclass)
{
stream<<myclass.getFood();
stream<<myclass.getGrocery();
stream<<myclass.getKey();
stream<<myclass.getStatn();
stream<<myclass.getTransport();
return stream;
}
QDataStream &operator >>(QDataStream &stream, budget &myclass)
{
float f;
QString s;
stream>>f;
myclass.addFood(f);
stream>>f;
myclass.addGrocery(f);
stream>>s;
myclass.addDate(s);
stream>>f;
myclass.addStatn(f);
stream>>f;
myclass.addTransport(f);
return stream;
}
그러나 지금도 난 여전히 오류 얻을 :
C:\Users\Karthik\QT\Mendrive-build-simulator-Simulator_Qt_for_MinGW_4_4__Qt_SDK__Debug........\QtSDK\Simulator\Qt\mingw\include\QtCore\qdatastream.h:381: error: no match for 'operator<<' in 'operator<<(((QDataStream&)((QDataStream*)out)), ((const QString&)((const QString*)it.QHash::const_iterator::key with Key = QString, T = budget))) << it.QHash::const_iterator::value with Key = QString, T = budget'
왜 이런 일이 있습니까? 분명히 >> 연산자가 오버로드 된 것 같습니다. < < 연산자에 대해서만 오류가 발생합니다.
감사합니다.
이미 대답에 당신을 지적 할 수 있지만, 5 오류로 그 리드 폼 : 'C : \ Users \ Karthik \ QT \ Mendrive-build-simulator-Simulator_Qt_for_MinGW_4_4__Qt_SDK__Debug \ .. \ Mendrive \ fileoverload.h : 11 : 오류 : 'const 예산'을 'float budget'의 'this'인수로 전달 : : ** getFood() ** '폐기 한정자' * * getFood() **는 다른 멤버 함수로 대체됩니다. 그래서 func이 const 값을 반환해야하기 때문에'const'를 제거하려고 시도했습니다. – Airmine
그렇습니다. – Neox
예! 친구 기능으로 선언 한 것은 그것을했습니다! 설명해 주시겠습니까? 그것이 어떻게 달라 졌습니까? 나는 왜 그것이 비 친구 기능으로 작동하지 않는지 이해할 수 없다. 고마워요! – Airmine