【问题标题】:pass a void pointer to a function with const char * const将 void 指针传递给具有 const char * const 的函数
【发布时间】:2013-10-25 14:01:44
【问题描述】:

好的,我有一个变量

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 都没有运气

【问题讨论】:

  • 静态演员可以工作吗?
  • 你试过 (const char)pv 吗? pv 已经是一个指针了。
  • 请列举所有错误和问题,您的运气很好。\
  • 试试findIDType(static_cast<char*>(vp));
  • @RvdK (const char)pv 没试过,我认为它必须用指针强制转换,因为它是指针。

标签: c++ pointers casting


【解决方案1】:

您必须使用reinterpret_cast,并转换为您想要传递的完整类型,这应该可以:

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

但正如 cmets 中所述,static_cast 也可以工作,实际上更可取:

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

【讨论】:

  • void* 投射一些指针时首选static_cast。事实上,reinterpret_cast 在他的旧编译器中可能不允许用于void*See this for more info。在示例中使用static_cast 也可以在我的编译器(GCC4.8.1)上正常工作。
  • 我正在重新编译和测试两者
猜你喜欢
  • 1970-01-01
  • 2018-08-09
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 2021-03-09
相关资源
最近更新 更多