小弟我在做范磊的零起点学通C++18章的时候遇到有关问题请各位老师帮小弟我看看

我在做范磊的零起点学通C++18章的时候遇到问题请各位老师帮我看看
我刚学C++ 不是很懂,而且也是个英语白痴。下面出错的那一句有注释 只要把那句注释起来就不出错 我想知道错误原因请各位老师指点一下!这问题弄了我一天了实在找不到问题所以,不知道怎么改
[code=C/C++][/code]

#include <iostream>
#include <cstring>
using namespace std;
class string1
{

public:
string1(const char *const ch)
{

len=strlen(ch);int i=0;
str=new char[len+1]; 

for (i;i<len;i++)
{
str[i]=ch[i];
}
str[len]='\0';
}
~string1(){str=NULL; delete []str;}
int length(){return len;}
string1 operator=(char *ch)
{
strcpy(str,ch);
//str=ch;
len=strlen(str);
return str;
}

string1 operator+(string1 str1)
{


strcat(str,str1.str);
return str;
}
string1 operator+=(string1 str1)
{



strcat(str,str1.str);
return str;
}
bool operator==(string1 str1)
{
if (strcmp(str,str1.str)==0)
return true;
else
return false;
}
bool operator>(string1 str1)
{
if (strcmp(str,str1.str)>0)
return true;
else
return false;
}
bool operator<(string1 str1)
{
if (strcmp(str,str1.str)<0)
return true;
else
return false;
}

ostream friend &operator<<(ostream&s,string1&str1)
{
s<<str1.str;
return s;
}

char * get(){return str;}
private:
int len;
char *str;
};

void main()
{
string1 str("abccd");
string1 str1="22222";
string1 str2="333333";
char ch[]="aaaaaaaaaaaaaaaaa";
str1=ch;//只要不把这一句注释起来就会出错!请问错误出在什么地方呢?

cout<<str<< "的长度为:"<<str.length()<<endl;
cout<<str1<< "的长度为:"<<str1.length()<<endl;
//str+=str1;
// str=str2+str1;
cout<<"合并后为:"<<str<< "的长度为:"<<str.length()<<endl;
/*string1 str="113";
string1 str1="112";*/
if (str== str1)
cout<<"str与str1相等"<<endl;
else
cout<<"str与str1不相等"<<endl;
if (str> str1)
cout<<"str>str1"<<endl;
else
if (str<str1)
cout<<"str<str1"<<endl;
else
cout<<"str与str1相等"<<endl;


}


------解决方案--------------------
VS2010下调式了下,也没问题,不清楚的你的问题怎么出现的?