是否可以定義一個只對類的靜態成員進行操作的靜態插入運算符?喜歡的東西:如何定義靜態運算符<<?
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