Re: void * pointers
Rahul wrote:
Hi Everyone,
There was a discussion on the need of void * in C and C++. In C, it
is a generic pointer which can be typecasted to and from that of other
types.
And it is developer's head ache to take care that the cast to and
from void * is correct. C++ enhanced type cast dynamic_cast doesn't
help in this case, as it needs the type information. This makes me
wonder, why make a cast to void * and pass the info to other
functions? Why not simply pass the direct pointer?
In C++, we don't use void* in this case, we use base_class* as
parameter, and we don't have to do explicit cast before passing it.
An good example why using void* in C is thread entry function,
an thread entry function often defined as following:
void entry_fn(void* param) // client programmer
{
// cast param to the exact type and use it
}
CRT function on Win32 to create a thread.
uintptr_t _beginthread(
void( *start_address )( void * ),
unsigned stack_size,
void *arglist
);
// client programmer create a thread like the following
_beginthread(entry_fn, 0, NULL);
entry_fn is also considered as callback function, _beginthread can't
foresee what kind of param, number of params that the client programmer
will use, so leave it to a generic type (void*).
Does anyone know the reason where void* only can solve the problem?