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
[50291] 초보질문 C++Builder 때문에 죽겠습니다
신우철 [darkman76] 1446 읽음    2007-08-16 16:14
하루를 꼬박 생각해도 답이 없네요 ㅜㅜ
질문할 사항은 제가 IOCP를 만들고자 합니다 winsock2.h를 사용해서 말이죠
그런데 문제는 쓰레드 생성입니다
일단 소스를 보시면 

------------------------------------------------------------------------
IOCP.h
------------------------------------------------------------------------
#include ListenThread.h
class CIOCP
{
public:
  sock m_client;
  CListenThread *m_pListen;
  void Init();
  void LitenProc();
}
------------------------------------------------------------------------




------------------------------------------------------------------------
CIOCP.cpp
------------------------------------------------------------------------
void CIOCP::Init()
{
  m_pListen = new CListenThread();
  m_pListen->setproc(&CIOCP::LitenProc)
}
void LitenProc()
{  
   while(true)
   {
      if(FD_ACCEPT)
      {
        m_client = ACCEPT();
         .
         .
         .
      }
   }
}
------------------------------------------------------------------------




------------------------------------------------------------------------
ListenThread.h
------------------------------------------------------------------------
#include IOCP.h
typedef void(CIOCP::*proc)(void);
class CListenThread :public TThread
{
public:
   proc m_proc;  
   void setproc(proc pproc);

}
------------------------------------------------------------------------




------------------------------------------------------------------------
ListenThread.cpp
------------------------------------------------------------------------
void CListenThread::setproc(proc pproc)
{
   m_proc = pproc;   
}

void __fastcall CListenThread::Excute()
{
  (CIOCP->*m_proc)();
}
------------------------------------------------------------------------

이렇게 할려고 하는데 결국은 두개의 파일에서 참조를 해야하고 그렇게 되면 상호참조
(typedef void(CIOCP::*proc)(void);)에러가 떨어집니다
도저히 답이 없네요 결국은 CreateThread 를 사용해야 하는것 같은데 거기에 들어가는
Thread함수 또한 DWORD WINMAIN 함수네임() 이렇게 선언을 해야 하고 이함수가 CIOCP 클래스
내에서 선언을 하면 에러가 나더라고요 뭐 좋은 방법이 없을까요
고맙게도 많은 분들이 여기에 답변을 주셨는데 제가 원하는 답변이 아니라서 자세히 소스와 함께
다시 올립니다
다시 한번 말씀드리자면 제가 원하는건 쓰레드 클래스를 하나 만들고 그 쓰레드 클래스 내에서
즉 Excute() 내에서 작업을 하는게 아니고 메인클래스에서 쓰레드 작업을 하고 싶은겁니다
이렇게 하는 이유는 모든 작업들에 필요한 변수들은 CIOCP 클래스에 선언이 되어 있으니까요
그렇다고 CIOCP 에서 쓰레드를 상속받을수도 없죠 다중 쓰레드를 생성 할거니까요
제발 좋은 방법이 없을까요 깔끔하고 안정적인 그런 방법이요 부탁좀 드립니다

아 그리고 또 한가지 질문이 있는데 제가 프로젝트에 C++Builder 6.0에서 작업을 하는데
위에 파일 네임이 있잖아요 탭으로 거기에 CIOCP.cpp CIOCP.h 이렇게 두개의 텝이 있는데
원래대로라면 하나의 탭에서 Ctl + F6를 누르면 한텝에서 CIOCP.cpp CIOCP.h 이게 두개 번갈아 가면서 보여야
하는거 아닌가요 왜 저는 두개의 텝으로 나오나요??
이상 허접한 질문이었습니다 답변 꼭 부탁 드립니다

+ -

관련 글 리스트
50291 초보질문 C++Builder 때문에 죽겠습니다 신우철 1446 2007/08/16
50292     Re:초보질문 C++Builder 때문에 죽겠습니다 장성호 1581 2007/08/16
50295         Re:Re:초보질문 C++Builder 때문에 죽겠습니다 신우철 1351 2007/08/16
50301             Re:Re:Re:초보질문 C++Builder 때문에 죽겠습니다 장성호 1876 2007/08/16
50303                 장성호님 드디어 해결했네요 너무 감사합니다 ^^ 좋은 주말 보내세요 (냉무) 신우철 1850 2007/08/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.