如何定义静态运算符<<?

Pie*_*o M 4 c++ static insertion operator-keyword

是否可以定义静态插入操作符,该操作符仅对类的静态成员进行操作?就像是:

class MyClass
{
public:
    static std::string msg;

    static MyClass& operator<< (const std::string& token) {
        msg.append(token);
        return *this;   // error, static
    }
};
Run Code Online (Sandbox Code Playgroud)

或者:

static MyClass& operator<< (MyClass&, const std::string &token)
{
    MyClass::msg.append(token);
    return ?;
}
Run Code Online (Sandbox Code Playgroud)

这就是我想用它的方式:

MyClass << "message1" << "message2";
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ben*_*ley 10

在你的情况下我可能会做的是创建另一个重载的类operator<<,然后创建该类型的静态成员.像这样:

class MyClass
{
public:
    static std::string msg;

    struct Out {
        Out & operator<< (const std::string& token) {
            MyClass::msg.append(token);
            return *this;
        }
    };

    static Out out;    
};
Run Code Online (Sandbox Code Playgroud)

使用它,是不是你问什么,但足够接近,我认为:

MyClass::out << "message1" << "message2";
Run Code Online (Sandbox Code Playgroud)