将一个void指针传递给一个带有const char * const参数的函数

5

好的,我有一个变量:

void * vp

通过函数传递:proccessData(void * vp)

我有一个函数接受以下参数:

findIDType(const char* const pointer),想要将pv作为findIDType(pv)进行传递

使用GNU 2.95.3编译,不允许使用其他编译器。

问题是编译器没有给出为什么不可接受的原因, 只是输出了一个无用的信息cannot

如何将其强制转换?从void*转换为const char* const

我已经尝试过(char*)pv(const char*)pv(const char* const)pv,但都没有成功。


静态转换会起作用吗? - Kakalokia
尝试使用 findIDType(static_cast<char*>(vp)); - Felix Glas
@RvdK (const char)pv还没有尝试过,我认为它必须被转换为指针,因为它是指针。 - aah134
@AliAlamiri 静态转换失败。 - aah134
@klm123,我收到了一个小错误信息,只是“无法”。 - aah134
显示剩余2条评论
1个回答

3

您需要使用reinterpret_cast,并转换为您想要传递的完整类型,这应该可以解决问题:

const char* const ptrTpPass = reinterpret_cast<const char* const>(vp);

但是如评论中所提到的,static_cast也可以使用,并且实际上更可取:

const char* const ptrTpPass = static_cast<const char* const>(vp);

2
在将某些指针从void*转换时,最好使用static_cast。实际上,在他的旧编译器中,reinterpret_cast可能不允许用于void*点击此处了解更多信息。此外,使用static_cast在我的编译器(GCC4.8.1)上也可以正常工作。 - Felix Glas
我正在重新编译和测试两个。 - aah134

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接