C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[21383] 외부클래스를 소멸시 에러가 나는데, 어떻게 처리하야하는지요 ?
멋쟁이 [pegasus] 722 읽음    2002-09-11 23:17
우선은 기초가 부실해서 허접한 질문으로 질문란을 어지럽힌 점 죄송하게 생각합니다.

프로그램을 만들다가 데이터는 외부 클래스로 빼면 좋겠다는 생각에 CDataControl이라는 클래스를 분리된 파일로 만들었습니다. 파일명은 UnitRFDataControl.cpp고 헤더는 같은 이름에 h가 붙더군요.

이 클래스 헤더에서 아래와 같이 만들었지요.
//------------------------
#ifndef UnitRFDataControlH
#define UnitRFDataControlH
//------------------------
#include <Classes.hpp>
//------------------------
class CDataControl
{
private:
protected:
public:
    __fastcall CDataControl();//생성자
    __fastcall ~CDataControl();//소멸자
         int m_iData[100];
};
//------------------------
extern CDataControl *DataControl;
//------------------------
#endif

그리고 cpp파일은 아래와 같겠죠 ?
//------------------------
#include <vcl.h>
#pragma hdrstop
#include "UnitRFDataControl.h"
//------------------------
#pragma package(smart_init)

CDataControl* DataControl;
//------------------------
__fastcall CDataControl::CDataControl()
{
}
//------------------------
__fastcall CDataControl::~CDataControl()
{
}
//------------------------

됐다 싶어서,
Project1.cpp파일을 아래처럼 고쳤습니다.

//------------------------
#include <vcl.h>
#include "UnitRFDataControl.h"
#pragma hdrstop
//------------------------
USEFORM("UnitMain.cpp", FormMain);
//------------------------
extern CDataControl* DataControl;<--- 외부클래스로 선언하고
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    try
    {
        Application->Initialize();
        DataControl=new CDataControl;<--- 생성하고
        Application->CreateForm(__classid(TFormMain), &FormMain);
        Application->Run();
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
    }
    catch (...)
    {
        try
        {
            throw Exception("");
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
    }

    delete [] DataControl; <---지우고
    return 0;
}
//------------------

컴파일을 했더니 잘 실행되는데, 프로그램을 닫으니깐, 소멸자부분에서 에러메시지가 뜨는군요.

__fastcall CDataControl::~CDataControl() <---여기가 잘못됐다구 하는데...
{
}
//------------------------

Access Violation Address 40006828어쩌고 저쩌고...

제대로 된거 같은데 어디가 문제여서 이런 메시지가 나오는 건지 모르겠습니다.
너무 허접한 질문이라 고수님까지 나설 필요두 없으실 것 같지만, 지도편달하는 의미에서 한수 알려주시길 부탁드립니다.

+ -

관련 글 리스트
21383 외부클래스를 소멸시 에러가 나는데, 어떻게 처리하야하는지요 ? 멋쟁이 722 2002/09/11
30614     Re:외부클래스를 소멸시 에러가 나는데, 어떻게 처리하야하는지요 ? 멋쟁이 577 2002/09/12
30613     Re:외부클래스를 소멸시 에러가 나는데, 어떻게 처리하야하는지요 ? posix.duo 695 2002/09/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.