Possible Duplicate:
std::endl is of unknown type when overloading operator<<
Operator overloadingऑपरेटर << एसटीडी के लिए की सी ++ श्रृंखलन :: उपयोग
मैं वर्तमान में एक लकड़हारा वर्ग प्रोग्रामिंग हूँ, लेकिन operator<<
विधि एक संकलक त्रुटि होती है की तरह अदालत।
#include <iostream>
class Logger {
public:
Logger() : m_file(std::cout) {}
template <typename T>
Logger &operator<<(const T &a) {
m_file<<a;
return *this;
}
protected:
std::ostream& m_file;
};
यह मेरी main.cpp में शामिल है और perfecly काम करता है जब मैं उत्पादन एक स्ट्रिंग शाब्दिक है:: यहाँ वर्ग के एक कम से कम संस्करण, फ़ाइल "logger.h" में है
log << "hi";
हालांकि, निम्नलिखित संकलित नहीं होगा।
#include "logger.h"
int main() {
Logger log;
log << std::endl;
}
जी ++ संकलक रिपोर्ट:
src/main.cpp:5: error: no match for 'operator<<' in 'log << std::endl'
"इसके अलावा, आप उपयोग कर सकते हैं '\ n' के बजाय 'endl' की।" यदि ओपी यह सुनिश्चित करना चाहता है कि आउटपुट बफर फ़्लश किए गए हैं, जैसा कि मैंने [हाल ही में सीखा] (http://stackoverflow.com/q/8311058/440558)। –
ठीक है, मैं इसे अपने उत्तर में जोड़ दूंगा। – fefe
धन्यवाद, यह काम करता है :) – Tuxer