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

c++, unsigned-char, void-pointers

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.

Problem

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?

Original source

Related problems