是否可以定义一个只对类的静态成员进行操作的静态插入运算符?喜欢的东西:如何定义静态运算符<<?
class MyClass
{
public:
static std::string msg;
static MyClass& operator<< (const std::string& token) {
msg.append(token);
return *this; // error, static
}
};
或者:
static MyClass& operator<< (MyClass&, const std::string &token)
{
MyClass::msg.append(token);
return ?;
}
这是我想使用它:
MyClass << "message1" << "message2";
谢谢!
[C++静态运算符重载]可能的重复(http://stackoverflow.com/questions/1390606/c-static-operator-overloading) – GWW
我会说不,因为'MyClass' isn '值(它是*类型*),所以'MyClass <<“messa ge“'不是一个有效的表达式。你可以将MyClass :: msg'包装成一个'std :: istringstream',但是:'std :: istringstream(MyClass :: msg)<<“hello”<<“world”;' –
@KerrekSB你的意思是std :: ostringstream,但我+1你的意见无论如何 – wreckgar23