win32/pthreads 주위에 C++ 스레드 래퍼 클래스가 있습니다. 문제는 내 헤더에 biggie-like가 많이 필요하다. windows.h와 boost :: function은 아래에 내 typedef를 선언한다.파일, typedef 및 forward 포함 포함
이 문제가 발생합니까? 클래스와 구조체를 선언 할 수 있지만 네임 스페이스에서 win32 HANDLE 및 템플릿 함수와 같은 데이터 유형을 전달할 수 있다는 것을 알고 있습니다 ...?
#include "boost/function.hpp"
/* Thread wrapper class */
class IThread
{
public:
#if defined _WIN32 || _WIN64
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#undef WIN32_LEAN_AND_MEAN
typedef HANDLE ThreadHandle;
#else
#include <pthread.h>
typedef pthread_t ThreadHandle;
#endif
enum ThreadState
{
DETACHED = 0,
RUNNING,
FINISHED
};
typedef boost::function1<void, void*> Task;
virtual ~IThread() { }
IThread& operator=(IThread& other);
virtual int32_t Join() = 0;
virtual int32_t SetPriority(int32_t priority) = 0;
virtual ThreadHandle& GetNativeHandle() = 0;
virtual ThreadState GetThreadState() const = 0;
};
감사
'HANDLE'은 단지'void * '입니다. 그냥'typedef void * ThreadHandle;이라고 말하십시오. WINAPI 데이터 유형의 경우, 내 소스를 찾을 수 있습니다. [http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751 (v = vs. 85) .aspx). – chris
클래스 외부에서 typedef를 이동할 수 없습니까? – Jaywalker
그들은 왜 수업 외부에 있어야합니까? 클래스의 일부로 핸들을 선언하는 것이 더 합리적이지 않습니까? – KaiserJohaan