글수 2,699
공유메모리를 통한 서버-클라이언트 프로그램을 짜는 중인데요,
쓰레드를 이용해서, 공유메모리에 기록된 내용을 확인하고, 내용 변경시 별도의 클래스 멤버 함수를 호출하려고 하는데, "illegal call of non-static member function"이란 에러가 뜹니다. 쓰레드는 static으로 정의했습니다. Parse된 데이타를 다이알로그 멤버 변수와 연결할려고 멤버함수로 선언했는데, 쓰레드에서 호출이 안되네요.
UINT CServerGroupDlg::Thread_Wait(LPVOID pParam)
{ while(TRUE)
{ if(::WaitForSingleObject((HANDLE)ClientEvent, 1) == WAIT_OBJECT_0)
ParseFrame();
}
}
void CServerGroupDlg::ParseFrame()
{ ~
m_List_InfoOfClient.InsertItem(0, ClientID, 0);
~ }
쓰레드를 이용해서, 공유메모리에 기록된 내용을 확인하고, 내용 변경시 별도의 클래스 멤버 함수를 호출하려고 하는데, "illegal call of non-static member function"이란 에러가 뜹니다. 쓰레드는 static으로 정의했습니다. Parse된 데이타를 다이알로그 멤버 변수와 연결할려고 멤버함수로 선언했는데, 쓰레드에서 호출이 안되네요.
UINT CServerGroupDlg::Thread_Wait(LPVOID pParam)
{ while(TRUE)
{ if(::WaitForSingleObject((HANDLE)ClientEvent, 1) == WAIT_OBJECT_0)
ParseFrame();
}
}
void CServerGroupDlg::ParseFrame()
{ ~
m_List_InfoOfClient.InsertItem(0, ClientID, 0);
~ }

static 이란거는 instanc와 관계없이 실행되는 함수입니다(다시말해 this가 없습니다)
그런데 static 안에서 non-static 멤버함수를 호출하면, 일반 멤버함수는 this가 필요한데 없으니까 당연히 안될수밖에요.
학교에서 과제하시는 것 때문에 MFC를 하신다면, 우선, C++를 차근차근 공부하시기 바랍니다.