从Foo **到void **的转换无效 - 为什么隐式类型转换允许void *但不能为void **?

时间:2015-01-14 08:48:56

标签: c++ gcc type-conversion

struct Foo {};
...
void * p = (Foo*)0; // OK
void ** pp = (Foo**)0; // Invalid conversion

据我所知,在C ++中可以隐式地将指向任何非指针类型的指针强制转换为void*。那么为什么不允许将指针类型转换为void**

1 个答案:

答案 0 :(得分:4)

指针可以隐式转换为void *,因为void *是通用指针。但是,void **不是指向指针的通用指针。

C FAQ 4.9解释了为什么在C中没有指向指针类型的泛型指针,我认为它也适用于C ++。