我有以下代码;
void* buffer = operator new(100);
unsigned char* etherhead = buffer;
尝试编译时,我收到该行的以下错误;
error: invalid conversion from ‘void*’ to ‘unsigned char*’
为什么我会收到这个错误,我认为 void 是“无类型”的,所以它可以指向任何东西,或者任何东西都可以指向它?
您需要进行强制转换,因为如果不先强制转换,就无法将 void* 转换为任何内容。
你需要做
unsigned char* etherhead = (unsigned char*)buffer;
(虽然你可以使用static_cast
also)
要了解有关 void 指针的更多信息,请查看6.13 — 空指针 http://www.learncpp.com/cpp-tutorial/613-void-pointers/.
“无类型”状态void*
只存在于C中,不存在类型安全性更强的C++中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)