저는 몇 년 동안 코딩을 많이하지 않았기 때문에 저는 C++에서 실제로 가지고있는 아이디어를 얻기 위해 정말로 기본적인 스레드 관리자를 만들고 싶었습니다. 이 오류가 발생하는 문제가 발생했습니다 :C++에서 기본 ThreadManager를 만들려고 할 때 오류가 발생했습니다.
ThreadManager.cpp:49:37: error: cannot convert 'ThreadManager::updateLoop' from type 'DWORD (ThreadManager::)(LPVOID) {aka long unsigned int (ThreadManager::)(void*)}' to type 'LPTHREAD_START_ROUTINE {aka long unsigned int (attribute((stdcall)) )(void)}'
그러나 수정 방법을 모르겠습니다. 여기에 제 코드가 있습니다. 포맷으로 여기에 붙여 넣을 방법을 알아낼 수 없었습니다. 내가 각 라인에 4 개 공간을 필요로하지만 시간이 걸릴 것처럼 보였다 말했다, 그래서 나는 페이스트 빈에 넣어 : 내가 말했듯이 http://pastebin.com/7xETj5BK
:
ThreadManager.cpp : http://pastebin.com/2bL3mTqv
ThreadManager.h , 나는 오랫동안 많은 것을 프로그래밍하지 못했고, 내가 기억하는 것으로 돌아 가려고 노력하고있다. 그래서 어떤 도움도 인정 될 것이다.
또한 코드 수정을위한 제안 사항이 있으면 알려 주시기 바랍니다. 나는 그것이 좋은 OOP가 아니라는 것을 알고 있으며, 재사용 가능성은 거의 없다. 그러나 이것은 첫 번째 초안이며 내가 처음 작성한 첫 번째 프로그램이다. –
우선,'TerminateThread'를 사용하지 마십시오. 둘째로, C++ 11을 사용할 수 있다면,'std :: thread'를 사용하거나'boost :: thread'를 사용하는 것을 금지하십시오. 그것들은'Win32' API를 직접 다루는 것보다 훨씬 쉬운 특정 인터페이스를 제공합니다. – Chad
스레드 함수는 멤버 함수가 될 수 없습니다. 적어도이 방법은 아닙니다. 일반 함수 (메소드가 아님) 또는 클래스의 정적 메소드를 사용해야합니다. –