c++ - Static_cast for const 抛出限定符

标签 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

请帮助我理解这里的错误。看不懂

最佳答案

这个

T const* p

是指向 const T 的指针。这个

T* const p

是指向Tconst 指针。注意到区别了吗?在第一个例子中,指针指向的是const。在第二个例子中,指针本身就是 const。尝试将 void const* 转换为 mycustomStruct* const 意味着将指向 const 的指针转换为指向不是 const 的东西(只是指针本身恰好是 const)。因此,此转换将删除 const 限定符,这不是 static_cast 可以做的……

你可能想写

const mycustomStruct* pFlmcCtrl = static_cast<const mycustomStruct*>(pMdbCluster);

关于c++ - Static_cast for const 抛出限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59396201/

相关文章:

c++ - 如何从文件中读取包含子列表的列表?

C++ 线程本地单例间歇性失败

c++ - 如何在 Linux 中调用 "cpuid"?

c++ - 如何诊断加载 gstreamer 插件时出现的问题?

c++ - c++11 中 3 个线程和 2 个共享资源的同步问题

c++ - 将旧 vector 设置为新 vector

c++ - 图实现的邻接矩阵中的数组 vector 错误

c++ - 创建空 vector 以将值插入以后

c++ - 在 MSVC 中压缩后可能发生数据损坏? (C++)

c++ - 使用 'unsigned int' 读取 'cin'