const的static_cast抛弃了限定词

时间:2019-12-18 16:21:58

标签: c++

我正在编写具有以下功能的代码,并且是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

请帮助我在此处了解错误。我不明白

1 个答案:

答案 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