我正在编写具有以下功能的代码,并且是C ++的新功能
foo(void const *pCluster, const uint32_t fieldNum, __attribute__((unused)) const uint32_t subFieldNum, const int64_t value)
{
bool status = false;
mycustomStruct* const pFlmcCtrl = static_cast<mycustomStruct* const>(pMdbCluster);
// Some Processing
}
这会产生错误错误:static_cast from 'const void *' to 'mycustomStruct* const' casts away qualifiers
。
请帮助我在此处了解错误。我不明白
答案 0 :(得分:0)
此
T const* p
是指向const
T
的指针。这个
T* const p
是指向const
的{{1}}指针。注意区别吗?在第一个示例中,指针指向的东西是T
。在第二个示例中,指针本身就是const
。尝试将const
强制转换为void const*
意味着将指向mycustomStruct* const
的指针转换为指向const
以外的指针的指针(只是指针)本身恰好是const
)。因此,此强制转换将删除const
限定符,而const
不能做到这一点……
您可能想写
static_cast