【发布时间】:2014-12-09 18:43:39
【问题描述】:
我想使用 C++ 格式进行这种转换,它以 C 方式工作。但是当我尝试 C++ 格式时它失败了。
有效!
void req_password(const void *data, size_t datalen)
{
char *password_old = ((char **) data)[0];
char *password_new = ((char **) data)[1];
...
}
失败了
void req_password(const void *data, size_t datalen)
{
char *password_old = (const_cast<char **>(data))[0];
char *password_old = (const_cast<char **>(data))[1];
...
}
错误:
error: invalid const_cast from type 'const void*' to type 'char**'
所以我的疑问是,我如何使用 C++ 方式进行这种转换?
PS:这段代码是API的一部分,我无法控制数据的输入。
【问题讨论】:
-
这是我收到的输入格式,我无法更改输入参数的格式。
-
抱歉,我更正了。
-
您需要先将
const_cast移出const,然后将reinterpret_cast移至char **。但这是我一段时间以来在 SO 上看到的最丑陋的代码。 -
因为谷歌指南风格的规则。
-
看起来你有一个糟糕的 API 可以使用,所以我想你也应该遵循一个糟糕的风格指南。
标签: c++ casting const-cast