template class 중단
#include
#include
using namespace std;
template
class List {
private:
T * m_data[size];
public:
List() {
for (int i = 0; i < size; i++) {
m_data[i] = 0;
}
}
List(const List& another) {
for (int i = 0; i < size; i++) {
m_data[i] = another.m_data[i];
}
}
~List() {
for (int i = 0; i < size; i++) {
if (m_data != 0) {
delete m_data[i];
}
}
}
int add(T in) {
for (int i = 0; i
if (m_data[i] == 0) {
m_data[i] = new T(in);
return i;
}
}
return -1;
}
int find(T what) {
for (int i = 0; i
if (m_data[i] != 0) {
if (*(m_data[i]) == what) {
cout << "Find" << endl;
return 1;
}
}
}
return -1;
}
int remove(int index) {
if (m_data
cout << "deleting...(" << index << ")" << endl;
delete m_data
return 1;
}
return -1;
}
};
class Complex
{
private:
int re, im;
public:
Complex(int a, int b) { re = a; im = b; }
int operator ==(Complex C);
};
int Complex::operator == (Complex C)
{
return re == C.re && im == C.im;
}
class String
{
private:
char * data;
public:
String(char * in) { data = in; }
int operator ==(String C);
};
int String::operator ==(String C)
{
return (*data) == *(C.data);
}
void main()
{
List cList;
List sList;
int i1 = cList.add(Complex(0, 0));
cList.add(Complex(1, 1));
int i2 = sList.add("abc");
sList.add("def");
cList.find(Complex(1, 0));
sList.find("def");
cList.remove(i1);
sList.remove(i2);
system("PAUSE");
}
컴파일은 잘되는데
소멸자에 delete 에서 중단이되네요 ㅠㅠ
무슨문제인가요
소스 코드를 올릴 땐 [code] 구문으로 감싸야
소스 코드를 올릴 땐
[code]
구문으로 감싸야 보기 좋게 된다는 건 모르실 수도 있지요...하지만 질문 글을 써 놓고 한 번 다시 돌아보기라도 했으면, 이런 식으로 레이아웃 와장창 깨진 글을 남겨놓고 갈 일은 없었을 텐데요.
각설하고,
delete
한 포인터는NULL
로 덮어쓰세요. 그게 일반적으로 안전한 방식이기도 하고, 질문자님의 코드 로직에도 부합합니다.그 외에도 지적하고 싶은 점이 많지만, (예: 질문자님의 String::operator == 코드는 비교를 하는 척만 하고 있습니다.) 그걸 질문하신 건 아니니까 넘어가지요.
댓글 달기