我有一個類Terminallog,這是超載運算符< <。如果我做以下運算符「<<」到一個指針
Terminallog clog(3);
clog << "stackoverflow.com is cool" << endl;
一切工作正常。 「stackoverflow.com很酷」是在一個很好的彩色方式打印到屏幕上,正是Terminallog應該做的。
現在我嘗試
Terminallog* clog = new Terminallog(3);
clog << "stackoverflow.com is cool" << endl;
,給了我一個編譯器錯誤:
error: invalid operands of types ‘Terminallog*’ and ‘const char [5]’ to binary ‘operator<<’
我可以看到,它是經過「< <」操作符的指針問題,但我怎麼能獲得與非指針版本相同的行爲?我可以簡單地取消引用指針,但是這會創建對象的本地副本(這對性能不利?)
因此,我不知道什麼是正確的方法嗎?
在此先感謝
ftiaronsem
我不認爲取消引用指針會創建對象的本地副本。 – 2011-03-31 09:18:00