Why can't I pass a void*
by reference? The compiler allows me to declare a function with the following signature:
static inline void FreeAndNull(void*& item)
But when I try to call it, I get the following error:
Error 1 error C2664: 'FreeAndNull' : cannot convert parameter 1 from 'uint8_t *' to 'void *&'
Casting it to void*
doesn't work either
Also, are there any workarounds?
If you take a void * by reference, you have to pass an actual void *, not an uint8_t *.
Try this instead:
template<typename T> inline void FreeAndNull(T * & V) { free(V); V = 0; }
EDIT: Modified sample to better reflect the OP's function name, and to address @6502's entirely correct comment.