Search code examples
c++void-pointersunsigned-char

Invalid conversion from ‘void*’ to ‘unsigned char*’


I have the following code;

void* buffer = operator new(100);
unsigned char* etherhead = buffer;

I'm getting the following error for that line when trying to compile;

error: invalid conversion from ‘void*’ to ‘unsigned char*’

Why do I get that error, I thought a void was "type-less" so it can point at anything, or anything can point to it?


Solution

  • You need to cast as you can not convert a void* to anything without casting it first.

    You would need to do

    unsigned char* etherhead = (unsigned char*)buffer;
    

    (although you could use a static_cast also)

    To learn more about void pointers, take a look at 6.13 — Void pointers.


    The "type-less" state of void* only exist in C, not C++ with stronger type-safety.