jwb*_*ley 6 c++ void-pointers unsigned-char
我有以下代码;
void* buffer = operator new(100);
unsigned char* etherhead = buffer;
Run Code Online (Sandbox Code Playgroud)
我在尝试编译时遇到以下错误;
error: invalid conversion from ‘void*’ to ‘unsigned char*’
Run Code Online (Sandbox Code Playgroud)
为什么我会得到那个错误,我认为一个空白是"无类型"所以它可以指向任何东西,或任何东西可以指向它?
你需要进行强制转换,因为你无法将void*转换为任何东西而不先抛出它.
你需要这样做
unsigned char* etherhead = (unsigned char*)buffer;
Run Code Online (Sandbox Code Playgroud)
(虽然你也可以使用static_cast)
要了解有关void指针的更多信息,请查看6.13 - Void指针.
A void*可能指向任何东西,你可以将指针转换为其他任何东西,void*而不是强制转换,但你必须使用a static_cast来做反向.
unsigned char* etherhead = static_cast<unsigned char*>(buffer);
Run Code Online (Sandbox Code Playgroud)
如果你想要一个100的动态分配缓冲区,unsigned char你最好这样做并避免强制转换.
unsigned char* p = new unsigned char[100];
Run Code Online (Sandbox Code Playgroud)