演算子のオーバーロードの感触をつかもうとしていますが、問題が発生しました。このプログラムは、2 つの文字列をコンスすることだけを目的としています。これを行う他の方法が既にあることは知っていますが、私はプレイしたかったのです。次のエラーが表示されます。
ファイル: dbgdek.cpp 行: 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;
}
助けてください!