我想创建自己的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