没与这些操作数匹配的"[]"运算符
没有与这些操作数匹配的[]运算符class String{public: char *m_s char& operator[](int i) friend boo
没有与这些操作数匹配的"[]"运算符
class String
{
public:
char *m_s;
char& operator[](int i);
friend bool operator==(const String& s1,const String &s2);//没有私有成员,friend多余?
};
char& String::operator[](int i)
{
return m_s[i];
}
bool operator==(const String& s1,const String &s2)
{
for(int i=0;s1[i];i++)//error:没有与这些操作数匹配的"[]"运算符
{
if(s1.m_s[i]!=s2.m_s[i])
return FALSE;
}
return TRUE;
}
有这两个小问题
[解决办法]增加一个成员函数:
char operator[](int i)const;
[解决办法]const无法调用非const函数
这个就需要函数重载了。
[解决办法]当你的bool operator==(const String& s1,const String &s2)变成
bool operator==(String& s1,String &s2)的时候
[解决办法]看参数表,那个对象就是只读的,所以调用的成员函数也是只读的。