Possible Duplicate:
std::endl is of unknown type when overloading operator<<
Operator overloadingC++ concatenamento dell'operatore << per std :: cout come l'utilizzo
Attualmente sto programmando una classe logger, ma il metodo operator<<
causa un errore di compilazione. Ecco una versione ridotta a icona della classe, nel file "logger.h":
#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;
};
E 'incluso nel mio main.cpp e lavora in ottima posizione quando ho uscita una stringa letterale:
log << "hi";
Tuttavia, il seguente non verrà compilato.
#include "logger.h"
int main() {
Logger log;
log << std::endl;
}
Le relazioni del compilatore g ++:
src/main.cpp:5: error: no match for 'operator<<' in 'log << std::endl'
"Inoltre, è possibile utilizzare '\ n' invece di' endl'." No, se l'OP vuole assicurarsi che i buffer di uscita siano scaricati, come ho appreso recentemente (http://stackoverflow.com/q/8311058/440558). –
Bene, lo aggiungerò alla mia risposta. – fefe
Grazie, funziona :) – Tuxer