如果我执行以下操作一切正常:
char* cp = "abc";
void* vp = NULL;
vp = static_cast<void*>(cp);//ok
cp = static_cast<char*>(vp);//ok
但以下不是:
char** cpp = &cp;
void** vpp = NULL;
vpp = static_cast<void**>(cpp);//error C2440: 'static_cast':
//cannot convert from 'char **' to 'void **'
cpp = static_cast<char**>(vpp);//error C2440: 'static_cast':
//cannot convert from 'void **' to 'char **'
请有人向我解释为什么不允许第二个例子。请不要引用 C++ 标准作为您的全部答案,因为我已经看到引用它的答案,但我不明白它们的意思。我想了解为什么第二个示例不起作用(即,如果您可以举一个危险的示例,那将是一个很大的帮助)。因为我不明白。对我来说,这两个例子都是投射指针。为什么额外的间接级别会产生任何影响?