自定义类内对std::string的引用问题
我自己定义了一个Test类:
- C/C++ code
#include<iostream>#include <string>using namespace std;class Test{public: Test(){} Test(string &aStr):m_Str(aStr){} const char& operator[](size_t aPos)const { return m_Str[aPos]; } char& operator[](size_t aPos) { return m_Str[aPos]; }private: string m_Str;};int main(){ Test t("test");//这里会出现error,const char*不能转化为string& cout << t[0] << endl; const Test lTest("Halen"); cout << lTest[1] << endl;}等我修改为
- C/C++ code
#include<iostream>#include <string>using namespace std;class Test{public: Test(){} Test(string aStr):m_Str(aStr){} const char& operator[](size_t aPos)const { return m_Str[aPos]; } char& operator[](size_t aPos) { return m_Str[aPos]; }private: string m_Str;};int main(){ Test t(string("test")); cout << t[0] << endl; const Test lTest("Halen"); cout << lTest[1] << endl;}就行了,这是为什么呢?求解答
[解决办法]
楼主这个基础真是稍微差了,竟然不知道非const的引用不能加在临时对象上。