Я пытаюсь почувствовать перегрузку оператора, но столкнулся с проблемой.Программа предназначена только для двух строк.Я знаю, что есть и другие способы сделать это, но я хотел играть.Я получаю следующую ошибку:
file: dbgdek.cpp line: 52 _ASSERTE (_BLOCK_TYPE_IS_VALID (pHead-> nBlockUse));
Я думаю, что это связано с моим использованием delete [].Пожалуйста, помогите, я действительно застрял.
#include <iostream>
using namespace std;
class list{
public:
char *value;
int size;
list(int s){size=s; allocmem();};
~list(){delete [] value;};
list operator+(list);
private:
void allocmem(void);
};
void list::allocmem(void){
value=new char[size];
}
list list::operator+(list a)
{
list t(a.size+size);
for (int i=0; i<a.size; i++){
t.value[i]=a.value[i];
}
for (int i=a.size; i<t.size; i++){
t.value[i]=a.value[i-a.size];
}
return t;
}
int main ()
{
list a(2),b(2),c(4);
a.value[0]='a';
b.value[0]='b';
a.value[1]='c';
b.value[1]='d';
c=a+ b;
for (int i=0; i<c.size; i++){
cout<<c.value[i];
}
system("pause");
return 0;
}
Пожалуйста, помогите!