c ++:如何安全地将const double **转换为const void **

时间:2010-11-08 18:04:03

标签: c++

以下代码在C ++中给出了编译器错误:

const double** x;
const void** y = x;

如何获得const安全等效物?

当然,你可以通过一个简单的演员来实现这个目的:

const void** y = (const void**) x;

但是肯定编译器应该知道这个好吗?它为什么抱怨?

2 个答案:

答案 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,告诉编译器忽略类型。