|
우선은 기초가 부실해서 허접한 질문으로 질문란을 어지럽힌 점 죄송하게 생각합니다.
프로그램을 만들다가 데이터는 외부 클래스로 빼면 좋겠다는 생각에 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어쩌고 저쩌고...
제대로 된거 같은데 어디가 문제여서 이런 메시지가 나오는 건지 모르겠습니다.
너무 허접한 질문이라 고수님까지 나설 필요두 없으실 것 같지만, 지도편달하는 의미에서 한수 알려주시길 부탁드립니다.
|