invalid conversion from `const void*' to `void*'
Im trying to implement a THREAD class that encapsulates a posix thread.
Here is an outline of my THREAD class.
class THREAD {
public:
// returns 1 if thread sucessfully started
int Start(void* = NULL);
// other public functions
protected:
virtual void* Run(void*);
};
int THREAD::Start(void* param) {
if (!Started) {
Param = param;
if (ThreadHandle =
(HANDLE)_beginthreadex(NULL,0,ThreadFunction,this,0,&ThreadID))
{
if (Detached)
{
CloseHandle(ThreadHandle);
}
}
Started = TRUE;
}
return Started;
}
Once the thread is started it basically calls Run() inside the
ThreadFunction.
I have a class called HELLO that inherits from the THREAD class that
simply prints "hello" to the screen.
class HELLO : public THREAD {
protected:
virtual void* Run(void*);
};
void* HELLO::Run(void* param) {
char* message = param;
for (int i=0;i<11;i++)
{
printf("%s\n", message);
}
return NULL;
}
Problem: when i create a new instance of HELLO and attempt to call
Start("hi") i get the following error under gcc 3.3.5
error: invalid conversion from `const void*' to `void*'
error: initializing argument 1 of `int THREAD::Start(void*)'
Under VC++ 8.0 the code works fine. Can anyone suggest a resolution.