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
[52094] 폼 생성자 오버로드 문제에 대해 문의드립니다.
빌더초보 [] 1387 읽음    2008-01-28 19:29
고수님들 안녕하세요.

빌더를 접한지 얼마되지 않은 초보입니다.

폼 생성자의 오버로드 문제 때문에 이렇게 문의를 드립니다.


보통 한 application에서 두개 이상의 폼을 생성하여 show를 시킬 때
이렇게 썼었거든요.

1)   File -> New -> Form  해서 새로운 폼을 하나 추가시킴

2)   Project -> Options -> Forms  에서 새로 추가시킨 폼을
     Auto-create forms:  에서 Available forms: 로 이동시킴

3)   원하는 곳에서 다음 구문을 추가하여 폼 생성함

     if( tempForm == NULL ) tempForm = new TtempForm(this);
          tempForm->Show();

여태까지 이런식으로 새로운 폼을 생성 & Show 를 했습니다.



보통 폼의 생성자가
    __fastcall TForm2(TComponent* Owner); 

이렇게 되어있는데



저는
    __fastcall TForm2(TComponent* Owner, int inputValue);

이런 형태를 가진 폼 생성자가 필요합니다.


그래서 다음과 같이 했습니다.

1)   File -> New -> Form  해서 새로운 폼을 하나 추가시킴



2)   Project -> Options -> Forms  에서 새로 추가시킨 폼(Form2)을
     Auto-create forms:  에서 Available forms: 로 이동시킴



3)   Unit1.cpp 파일 상단에 다음 구문을 추가함

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"    --->  새로 추가함.



4)   Unit2.h 파일에 다음 구문을 추가함

class TForm2 : public TForm
{
__published:    // IDE-managed Components
private:    // User declarations
public:        // User declarations
    __fastcall TForm2(TComponent* Owner);
    __fastcall TForm2(TComponent* Owner, int inputValue);          --->  새로 추가한 내용
};



5)   Unit2.cpp 파일에 다음 구문을 추가함
__fastcall TForm2::TForm2(TComponent* Owner, int inputValue)
    : TForm(Owner)
{
    ShowMessage(IntToStr(inputValue);
}



6)  Form1 에 Button 콤퍼넌트를 추가시키고 다음과 같은 Click 이벤트를 추가함

void __fastcall TForm1::Button1Click(TObject *Sender)
{
     if( Form2 == NULL ) Form2 = new TForm2(this, 2);
        Form2->Show();
}


이렇게 해서 컴파일을 시키면 에러없이 컴파일이 완료됩니다.
하지만 Form1에 있는 버튼을 누르면
다음과 같은 에러창이 뜹니다.


[Debugger Exception Notification]
------------------------------------------------------------------------
Project Project1.exe raised exception class EStackOverflow with message
'Stack overflow', Process stopped.
Use Step or Run to continue
                      [OK]              [Help]
------------------------------------------------------------------------


제가 무엇을 잘못했는지...
그리고 해결책은 무엇인지 알려주시면 감사하겠습니다.

고수님들 부탁드립니다.

+ -

관련 글 리스트
52094 폼 생성자 오버로드 문제에 대해 문의드립니다. 빌더초보 1387 2008/01/28
52100     Re:폼 생성자 오버로드 문제에 대해 문의드립니다. 방태윤 1142 2008/01/28
52101         Re:Re:폼 생성자 오버로드 문제에 대해 문의드립니다. 장성호 2081 2008/01/29
52109             답변 감사합니다. (_ _) 빌더초보 913 2008/01/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.