我想創建自己的std :: string包裝來擴展它的功能。 但是在聲明< <運算符時遇到了問題。 這裏是我到目前爲止的代碼:在C++中自定義字符串類的<<運算符函數的返回值
我的自定義字符串類:
class MyCustomString : private std::string { public: std::string data; MyCustomString() { data.assign(""); } MyCustomString(char *value) { data.assign(value); } void Assign(char *value) { data.assign(value); } // ...other useful functions std::string & operator << (const MyCustomString &src) { return this->data; } };
主程序:
int main() { MyCustomString mystring("Hello"); std::cout << mystring; // error C2243: 'type cast' : conversion from 'MyCustomString *' to 'const std::basic_string<_Elem,_Traits,_Ax> &' exists, but is inaccessible return 0; }
我想COUT治療類作爲的std :: string,使我不需要這樣做:
std::cout << mystring.data;
任何形式的幫助,將不勝感激!
謝謝。
Just fyi:我的IDE是Microsoft Visual C++ 2008 Express Edition。
我加入到這裏的其他答案,你需要一個獨立的(全局函數)的原因是因爲第一個參數的類型需要是一個'std :: string'或者你想在'<<'運算符之前擁有的任何類型。 – Skurmedel 2009-08-09 03:22:26
...這是在不修改實際的std :: string類的情況下提供這樣的運算符的唯一方法。 – Skurmedel 2009-08-09 03:23:21