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
[73802] Re:[질문]class
송신영 [palindrome] 4370 읽음    2016-08-10 13:29
아래와 같은 class 두개가 있다고 가정하면
A class에서는 B class 를 인자로 가지는 함수 또는 포인터 변수가 있고
B도 동일하게 A class를 인자로 가지는 함수 등이 있을 경우
class A{
    int Test(A a, B b);
};

class B {
    int Test(A a, B b) ;
};


컴파일 하면 A class에서 B를 참조하기 때문에 아직 B에 대한 정보를 모르는 상황이어 컴파일 error가 발생합니다.
그래서 class A와 B를 순서를 바꾸면
class B {
    int Test(A a, B b) ;
};

class A{
    int Test(A a, B b) ;
};

동일하게 B class에서 A를 참조하는데 아직 A 에 대한 정보를 모르는 상황이니 컴파일 error 가 발생합니다.

그래서 아래와같이 class prototype을 먼저 선언해 두면 위와같은 문제를 해결할 수 있습니다.


class A;
class B;

class A{
    int Test(A a, B b) ;
};

class B {
    int Test(A a, B b) ;
};


그러나 class prototype 이 먼저 선언되었다고 해서 해당 class가 정의 되기 전에는 인스턴스를 생성할 수는 없습니다.


하안인 님이 쓰신 글 :
: class cb;    --> 이부분이 의미하는것은 무엇인지요.
:
: class cb
: {
: .......
: };
:
:
: class cb ; 는 클래스를 선언만 해주는 것 아닌가요. 이부분이 없어서 되는것이 아닌지..
:
:
: cb *c1 = new cb;  --> 이때 생성자가 실행되는것으로 알고 있는데요.
: 위와 같이 동적으로 생성해서 사용하는것과 cb를 바로 사용하는것과의 차이는 어떤지요.
:
: vc++로 된 소스를 보던중에
:
: vc에서는
: 선언만하고
: cb *c1; 
: 으로 사용하는데 차이점을 알고 싶어서요.
: 즉
:
: cb& cb::instance()
: {
:     static cb c1;
:     return c1;
: }
:
: 으로
: cb::instance()._bc = true;
:
: 으로 값이 바뀌면
: 다음에 동적으로 생성해도 _bc의 값은 true로 설정되어있는건가요.
:

+ -

관련 글 리스트
73801 [질문]class 하안인 4315 2016/08/10
73802     Re:[질문]class 송신영 4370 2016/08/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.