小弟我需要你的帮助

我需要你的帮助。
请问这个 运算符重载 的函数哪里出错误了,谢谢你的解答,谢谢你!

原程序:
Mystring operator + (Mystring str1)
{
return(strcat(s,str1.s));
}


错误提示:error C2664: '__thiscall Mystring::Mystring(const class Mystring &)' : cannot convert parameter 1 from 'char *' to 'const class Mystring &'
        Reason: cannot convert from 'char *' to 'const class Mystring'
        No constructor could take the source type, or constructor overload resolution was ambiguous
------解决思路----------------------
strcat的返回值的类型是char*,而你重载的这个函数需要的返回值的类型是Mystring,从char*到Mystring的转换不会自动进行,你需要自己手动转换一下。
另外,使用strcat会改变当前对象的成员变量,而通常使用加法运算是不会改变相加的两个对象的,所以你的设计与平常的习惯不符。其实重载的运算符改成+=就好了:
Mystring& operator +=(const Mystring& str)
{
    strcat(s,str.s);
    return *this;
}
然后对+的重载就可以改成:
Mystring operator+(const Mystring& str)const
{
    Mystring rstr(*this); // 这里需要事先重载拷贝构造函数
    return rstr+=str;
}