나는 연산자 오버로딩에 대한 느낌을 얻으려고하고 있지만 문제가 발생했다. 이 프로그램은 단지 두 개의 문자열을 상실하는 의미입니다. 이미이 작업을 수행하는 다른 방법이 있다는 것을 알고 있지만, 나는 놀고 싶었습니다. 나는 다음과 같은 오류가 발생합니다 :클래스 내부에서 오버로드 + 디버그 어설 션이 실패합니다!
파일 : dbgdek.cpp 라인 : 52 _ASSERTE (_BLOCK_TYPE_IS_VALID (pHead-> nBlockUse));
삭제 []를 (를) 사용하는 것과 관련이 있다고 생각합니다. 제발 내가 정말로 붙어 있도록 도와주세요.
#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;
}
도와주세요!