关于类的派生的有关问题,

关于类的派生的问题,急急急急
#include<iostream>
#include<string.h>
using namespace std;

class string
{
protected:
char *str;
public:
int lengthstr();
void display();
string(char *chars);
~string();
};

class edit_string:public string
{
int guangbiao;
public:
void charu(char p);
edit_string(char *chars);
};

string::string(char *chars)
{
str=new char[strlen(chars)+1];
strcpy(str,chars);
}

int string::lengthstr()
{
return strlen(str);
}

string::~string()
{
delete[]str;
cout<<"你收";
}

void string::display()
{
cout<<str<<endl;
}


edit_string::edit_string(char *chars):string(chars)
{
int a;
cout<<"请输入光标的位置:";
cin>>a;
guangbiao=a;
}


void edit_string::charu(char p)
{
char *newstr;
int length=strlen(str);
newstr=new char[length+2];
strcpy(newstr,str);
for(int i=length-1;i>=guangbiao;i--)
newstr[i+1]=newstr[i];
newstr[length+1]='\0';
newstr[guangbiao]=p;
delete[]str;
str=new char[strlen(newstr)+1];
strcpy(str,newstr);
str[strlen(newstr)+1]='\0';
delete[]newstr;
}


void main()
{
edit_string A("nishidjfsie");
A.charu('a');
A.display();
}

哪里出错了,帮忙看一下

------解决方案--------------------
void edit_string::charu(char p)
{
char *newstr;
int length=strlen(str);
newstr=new char[length+2];
strcpy(newstr,str);
for(int i=length-1;i>=guangbiao;i--)
newstr[i+1]=newstr[i];
newstr[length+1]='\0';
newstr[guangbiao]=p;
delete[]str;
str=new char[strlen(newstr)+1];
strcpy(str,newstr);
str[strlen(newstr)+1]='\0'; 不要加1
delete[]newstr;
}