<div>A 클래스 선언</div> <div> </div> <div>class A<br>{<br>private:<br> string *str; </div> <div>...</div> <div><br>public:<br> A()<br> {<br> str = new string[10];</div> <div>...<br> }</div> <div> ~A()<br> {<br> delete[] str;<br> }</div> <div>}<br></div> <div>B 클래스 선언</div> <div> </div> <div>class B</div> <div>{</div> <div>private:</div> <div>string *str1;</div> <div>int *arr;</div> <div>...</div> <div> </div> <div>public:</div> <div>B()</div> <div>{</div> <div> str1 = new string[10];</div> <div>arr = new int[10];</div> <div>}</div> <div> </div> <div>~B()</div> <div>{</div> <div>delete[] str1;</div> <div>delete[] arr;</div> <div>}</div> <div> </div> <div>C 클래스 선언</div> <div> </div> <div>class C</div> <div>{</div> <div>private:</div> <div>B *queue;</div> <div>...</div> <div> </div> <div>public:</div> <div>C()</div> <div>{</div> <div>queue = new B[1000];</div> <div>...</div> <div>}</div> <div>~C()</div> <div>{</div> <div>delete[] queue;</div> <div>}</div> <div> </div> <div> </div> <div>main 함수</div> <div> </div> <div>void main()</div> <div>{</div> <div>...</div> <div>A *a = new A[1000];</div> <div>B *b = new B[1000];</div> <div>....</div> <div> </div> <div>delete[] a;</div> <div>delete[] b;</div> <div>}</div> <div> </div> <div> </div> <div> </div> <div>위 소스코드에서 각 클래스의 생성자, 소멸자와 main내의 new, delete에서 문법상으로 잘못된게 있나요?</div> <div> </div> <div>중간에 소스코드를 많이 생략했지만, 오류가 발생합니다. (C 클래스가 queue의 역할을 하는 클래스인데, queue에 삽입이 제대로 되지를 않습니다.)</div> <div> </div> <div>그래서 임의로 A클래스의 소멸자 (str 배열)을 없애보았더니 오류가 없었습니다.</div> <div> </div> <div>B클래스의 소멸자만 없애도 오류가 없고, C클래스의 소멸자만 없애도 오류가 발생하지 않았구요.</div> <div> </div> <div>main 내에서 a배열은 상관이 없고 b배열에 대한 delete만 삭제해줘도 오류가 발생하지 않았습니다.</div> <div> </div> <div>대체 뭐가 문제일까요..? 혹시 풀 소스코드가 필요하시다면.. 올려보겠습니다만 너무 길어서.. 최대한 축약했습니다.</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.