1.
m_pTimer = new TTimer(this); 이렇게 사용하려면?
class CMyClass가 TComponent를 상속받아야 됩니다.
class CMyClass : public TComponent
{
...
};
그런데 위와같이 하려면 CMyClass도 new할때 owner를 받아야 되죠
관련하여 생성자를 만들어 줘야하구요
2.
m_pTimer = new TTimer(NULL); ==> 이렇게 사용하면?
TComoponent *Owner로 TTimer는 생성자의 인자를 받습니다.
그럼 TComoponent *Owner의 역활은 무엇이냐?
이는 Component를 파괴와 관련됩니다.
생성할때 Owner를 주면 Owner가 delete( 또는 free) 될때
timer는 자동으로 delete됩니다.
그래서 생성할때 Owner를 주면 Owner가 delete될때 자동 delete되므로
명시적으로 delete해줄 필요가 없는것이죠
만약 timer의 Owner가 delete된후에 timer를 delete하려면 에러가 나게 됩니다.
결론적으로 m_pTimer = new TTimer(NULL); 이렇게 사용해도 문제 없습니다.
단 CMyClass 가 소멸될때 반드시 delete해줘야 하죠
CMyClass::~CMyClass()
{
delete m_pTimer ;
}
그럼...
조상진 님이 쓰신 글 :
: 안녕하세요.. __);
:
: 제가 작성한 클래스가 있습니다. 이 클래스에 타이머를 설치하고 실행시키고 싶은데요..
:
: class CMyClass
: {
: TTimer * m_pTimer;
: }
:
: CMyClass::CMyClass()
: {
: m_pTimer = new TTimer(); <- 문제의 부분
: m_pTimer->OnTimer = OnTimerSend;
: m_pTimer->Interval = 1000;
: }
:
: 처음에 이렇게 하려니 생성이 되지를 않더군요. 그래서 헬프를 보니 TComponent * AOwner를 주어야 할듯 싶더군요.
:
: 그래서 new TTimer(this); 했더니.. 역시나 MyClass인지라 되지가 않더군요.
:
: 결국 그냥 NULL을 넣어서 생성을 했습니다만..
:
: 이렇게 사용해도 프로그램 동작에는 문제가 없는 것인지요? 빌더는 6 입니다.
:
: 아니면 AOwner를 지정하는 방법이 있는지요?
:
: 별거 아닌것 같지만 초보인지라 어째 불안합니다.. __);
:
: 그럼 답변 부탁드립니다.
|