>>243
それは出なかった(operator+=(const C2char &ob2)をコメントアウトしても)けど代わりにこんなエラーが。
エラー E2015 test.cpp 5: 'operator +(const C2char &,const char *)' と 'operator +(const char *,const C2char &)' の区別が曖昧(関数 main() )

これはinline C2char operator +(const C2char &s1, const C2char &s2)を作れば平気だった。(中身は他のoperator +と同じ)

あとoperator == が等しいなら0を返すってのはまずい。普通の==の結果は等しかったら1、等しくなかったら0だから、そのノリで使えるようにしてくれ。
例えば、今のoperator ==をCompareってただのメンバ関数にしてクラスの外で新しく作り直すとかさ。
inline bool operator !=(const C2char& s1, LPCSTR s2)
{
 return (bool)s1.Compare(str);
}

inline bool operator ==(const C2char& s1, LPCSTR s2)
{
 return !(s1 != s2);
}