구문 오류에 대해서 질문입니다.
글쓴이: balgarac1 / 작성시간: 목, 2014/10/30 - 10:37오후
user 구조체를 정의했습니다. #ifndef __USER_H__ #define __USER_H__ #include "ThreadClient.h" #include "commandHandler.h" typedef struct _user { commandHandler *cmdHand; SOCKET sock; char ID[25]; } User; #endif commandHandler 클래스에서 User 구조체를 사용하기 위해 헤더 파일을 포함했는데 User가 선언된 부분에서는 전부다 구문 오류가 납니다. 세미 콜론을 빼먹은 것도 아닌데 왜 뜬금없이 구문오류가 나는지 잘 모르겠습니다. #ifndef _COMMNAD_HANDLER_H_ #define _COMMAND_HANDLER_H_ #include <map> #include <iostream> #include "ThreadClient.h" #include "user.h" using namespace std; class commandHandler { private: char cmd[20]; char sendBuff[BUFSIZ]; typedef void (*cmdHandler)(User&); public: commandHandler(); ~commandHandler(); void who(User&); void quit(User&); void user(User&); void talk(User&); void help(User&); void debug(User&); map<char *, cmdHandler> cmdHandlerMap; pair<map<char *, cmdHandler>::iterator, bool> mpair; }; #endif
Forums:
User는 commandHandler를 필요로 하고,
User는 commandHandler를 필요로 하고, commandHandler는 다시 User를 필요로 해서 생기는 순환 오류입니다.
어차피 User에는 commandHandler의 포인터만 필요하니 commandHandler.h를 include하지 마시고 forward declaration만 해주시면 될 것 같습니다.
또한 c binding을 별도로 제공하실 계획이 아니시라면 struct는 따로 typedef하지 않으셔도 됩니다.
답변 감사합니다.
조언 덕분에 잘 해결하고 좋은 지식 잘 얻어 갑니다. 감사합니다 ^^ !!!
댓글 달기