所以我在這裏尋找這個問題的答案,但沒有解決方案爲我工作。我已經重載操作< <在一個單獨的類「Operators.cpp」的確切代碼如下:超載時出現未定義的引用錯誤
#include "Rolo.h"
#include "RoloHeader.h"
#include "RoloParsedRecord.h"
#include "RoloRawRecord.h"
std::ostream& operator <<(std::ostream& outstream, const Rolo& rolo){
string roloData = rolo.toString();
outstream << roloData;
return outstream;
}
std::ostream& operator <<(std::ostream& outstream, const RoloHeader& roloHeader){
string roloHeaderData = roloHeader.toString();
outstream << roloHeaderData;
return outstream;
}
std::ostream& operator <<(std::ostream& outstream, const RoloParsedRecord& rpRecord){
string rpRecordData = rpRecord.toString();
outstream << rpRecordData;
return outstream;
}
std::ostream& operator <<(std::ostream& outstream, const RoloRawRecord& rrRecord){
string rrRecordData = rrRecord.toString();
outstream << rrRecordData;
return outstream;
}
在Rolo.h:
friend ostream& operator <<(ostream& outputStream, const Rolo& rolo);
friend ostream& operator <<(ostream& outputStream, const RoloHeader& roloHeader);
friend ostream& operator <<(ostream& outputStream, const RoloParsedRecord& rpRecord);
這就是所謂在Main.cpp的如:
Rolo theRolo;
theRolo.readRolo(inStream); //no issues here
theRolo.sortRolo(sortTag); //no issues here either
outStream << theRolo.toStringFormatted(); //prints out exactly as wanted, no issues
outStream << theRolo; //this is where it chokes
當我編譯它,我得到:
Main.o: In function `main':
Main.cpp:(.text.startup+0x3f9): undefined reference to `operator<<(std::ostream&, Rolo&)'
collect2: error: ld returned 1 exit status
make: *** [Aprog] Error 1
還有其他的類,完美運行。只有當我嘗試使用重載的< <而不是toStringFormatted()函數時纔會出現此問題。
所以我的問題是:這裏出了什麼問題?爲什麼沒有定義?而且,最重要的是,我能做些什麼來解決它?
就是這樣。我應該意識到這很簡單。我不得不將它添加到makefile中。非常感謝。 – user3029721