我有一个名为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<<’
我看到问题出在将"<<"运算符传递给指针上,但我该如何获得与非指针版本相同的行为呢?我可以简单地对指针进行解引用,但那会创建对象的本地副本(这对性能来说不是好事吧?)因此,我想知道正确的做法是什么?谢谢!