클래스가 서로 참조하도록 해서...
글쓴이: inootis / 작성시간: 목, 2003/05/15 - 1:59오후
// csb.cpp 파일 #include "csb.hpp" ..생략.. // csb.hpp 파일 #ifndef _CSS_HPP #define _CAS_HPP #include "csa.hpp" class csB { csA m_a; } #endif // csa.cpp 파일 #include "csa.hpp" ..생략.. // csa.hpp 파일 #ifndef _CSA_HPP #define _CSA_HPP #include "csb.hpp" class csA { csB m_b; } #endif
위의 클래스처럼...각 클래스가 서로 참조 하도록 하고...컴파일을...하니..
g++ -c csb.cpp
csa.hpp:7: 'csB' is used as a type, but is not defined as a type.
라는 메세지만 뿌리고 컴파일은 안되네요..
서로 참조할수 있도록 어떻게 해야하는지요?
Forums:
Re: 클래스가 서로 참조하도록 해서...
서로 포함하면 당연히 안됩니다.
포인터를 넣으세요.
----------------------------
May the F/OSS be with you..
Re: 클래스가 서로 참조하도록 해서...
포인터를 어떤식으로 사용해야하는거죠? ㅜㅠ. 이 문제만 해결되면 되는데 ㅜㅠ..
음..
이렇게 하면 안되겠어요?
----------------------------
May the F/OSS be with you..
csa.hpp:7: 'csB' is used as a type, but
csa.hpp:7: 'csB' is used as a type, but is not defined as a type.
그런문제가 아닌것 같은데요;;
인클루드 했음에도 불구하고 정의가 안되서 발생하는것 같은데.. 어찌 해결을..
아하
(왜 자꾸 날아가지)
그것은요 csa.hpp가 class csA를 정의하기 전에 csb.hpp를 부르잖아요.
그런데 csb.hpp는 다시 csa.hpp를 부르고, ifndef가 있으니까 아직 에러는 내지 않지만
class csA는 아직도 정의되지 않은 상태에서 쓰려고 하니까 문제가 되는겁니다.
그럴 때는
이런 식으로 하시면 됩니다.
포인터의 크기는 항상 같기 때문에 이렇게 임시로 선언을 해도 괜찮죠.
정의는 한 번 이상 하면 안되지만 선언은 여러 번 되어도 상관없거든요.
----------------------------
May the F/OSS be with you..
댓글 달기