프로그래밍/C & C++
AfxBeginThread 에 전달하는 함수로 멤버 함수를 전달하면 안된다.
hackability
2009. 5. 22. 18:26
error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)' 발생시~
AfxBeginThread의 첫번째 매개 변수로 전달하는 함수는 멤버 함수여서는 안된다.
CThreadDlg 객체가 생성되기 전에는, 멤버 함수를 엑세스할 방법이 없기때문이다.
두 가지 방법,
1) UINT ThreadProc(void*)를 전역 함수로 바꾸거나,
2) 헤더 파일의 thread 멤버 함수가 선언된 부분에서 static으로 선언해주면 된다.
static 멤버 함수는 해당 클래스의 객체 생성 여부에 관계없이 늘 실행이 가능하며 해당 클래스의 모든 객체가 공유하게 된다.
static UINT ThreadProc(LPVOID pParam);
AfxBeginThread의 첫번째 매개 변수로 전달하는 함수는 멤버 함수여서는 안된다.
CThreadDlg 객체가 생성되기 전에는, 멤버 함수를 엑세스할 방법이 없기때문이다.
두 가지 방법,
1) UINT ThreadProc(void*)를 전역 함수로 바꾸거나,
2) 헤더 파일의 thread 멤버 함수가 선언된 부분에서 static으로 선언해주면 된다.
static 멤버 함수는 해당 클래스의 객체 생성 여부에 관계없이 늘 실행이 가능하며 해당 클래스의 모든 객체가 공유하게 된다.
static UINT ThreadProc(LPVOID pParam);