2
所以我有這個簡單的C++記錄器類。簡單的記錄器流操作器
class Log{
public:
Log(const int& msgLevel = 1){
this->msgLevel = msgLevel;
}
template <class T>
Log& operator<<(const T& v){
if (msgLevel<=level) {
std::cout << v;
}
return *this;
}
~Log(){
}
static int level;
int msgLevel;
};
int Log::level = 1;
我可以這樣使用它:
Log(1)<<"My debug info: "<<otherVariable;
問題是,當我嘗試使用endl
:
Log(1)<<"My debug info: "<<otherVariable<<endl;
我得到這個錯誤:
error C2678: binary '<<' : no operator found which takes a left-hand operand of type 'Log' (or there is no acceptable conversion)
要解決這個錯誤,我需要添加ano
// For manipulators like endl
Log& operator<< (ostream& (*pf) (ostream&)) {
if (msgLevel<=level) {
cout << pf;
}
return *this;
}
但是添加這種方法只是爲了處理endl
似乎有點矯枉過正,對我說:療法方法上我的課是這樣。有沒有更好的選擇?
另一種方法是使用「\ n」而不是endl;
沒有嘗試的std :: ENDL – Jeef
我使用空間std – dynamic
下,我創建了一個類似的日誌類,但是我用了析構函數輸出換行符 –