以下代码在C ++中给出了编译器错误:
const double** x;
const void** y = x;
如何获得const安全等效物?
当然,你可以通过一个简单的演员来实现这个目的:
const void** y = (const void**) x;
但是肯定编译器应该知道这个好吗?它为什么抱怨?
答案 0 :(得分:3)
为什么编译器应该知道那没关系?我想你想要以下代替
void *y = x;
x = static_cast<const double**>(y); // casting back needs static_cast or c-style cast
void**
没有void*
具有的特殊属性(作为通用数据指针)。
答案 1 :(得分:0)
为什么会抱怨?
因为不行。
有一个FAQ解释了为什么,但我现在似乎无法找到它。
你的C-Style演员解析为reinterpret_cast,告诉编译器忽略类型。