當您將變量流式傳輸到輸出流(例如cout)時,類型轉換是自動的。我試圖找出是如何通過函數調用做到這一點,例如:在C++中將流變量作爲函數參數
inline void DEBUG(ostream& s) // Don't know if this prototype is appropriate
{
cout << s;
}
main()
{
int i = 5;
DEBUG("The value is: " << i << endl); // This doesn't compile
DEBUG("The value is: " + i + endl); // Neither does this
}
我發現這裏類似的問題,但它們都涉及通過流對象作爲參數,而我m試圖將「流式數據」傳遞給一個已經擁有該流對象的函數,所以它是相反的。這甚至有可能嗎?我不想訴諸明確的類型轉換。我也發現this question,但是如果我可以避免的話,我真的不想寫一個完整的記錄器類。
目前我正在實現它作爲一個宏,它的工作原理,但我寧願使用內聯函數,如果可能的話。
#define DEBUG(s) (cout << s)
這「整個記錄器類」小於二十行的代碼。 – molbdnilo