0
struct Foo {};
...
void * p = (Foo*)0; // OK
void ** pp = (Foo**)0; // Invalid conversion
据我所知,一个指向任何非指针类型的指针都可以隐式地转换为C++中的void*
。那么为什么同样不允许将ponter转换为指向void**
的指针?从Foo **无效转换为无效** - 为什么隐式类型转换允许void *但不能void **?
谢谢你,这是一个教育阅读。我仍然无法想象一个架构在做'(void **)&(Foo *)'是无效的,但标准禁止这个事实是需要考虑的事情。 –
@VioletGiraffe架构并不重要。这样做(至少有真正的变量)是未定义的行为,编译器理论上可以做任何事情。 – 2501