This question already has answers here:
How to define a static operator<<?
                                
                                    (4个答案)
                                
                        
                                6年前关闭。
            
                    
假设我有一个名为“ Logger”的类。名称是不言自明的,它记录东西。我有一个静态方法,它记录东西(Logger :: log(string msg))。
我想重载运算符<
    Logger << "AW YEAH, I LOVE C++";


我试图这样做,但是不能。我管理的是:

    Logger l;
    l << ":(";


...

我想做什么可能?如果是的话,怎么办?

先感谢您 :)

最佳答案

重载的运算符将根据值而不是类型进行操作。

也许您应该重命名您的类,然后创建一个合适的全局对象。例如:

logger.h:

class mylogger { /* ... */ };

extern mylogger logger;


logger.cpp:

#include "logger.h"

mylogger logger;


用法:

#include "logger.h"

logger << "Done";


当心全局初始化问题;虽然;查看您std::cout的实现以解决此问题(例如,使用Schwartz计数器)。

关于c++ - 是否可以像这样重载operator <<? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20293853/

10-09 07:34
查看更多