c++ - const 的 static_cast 抛弃限定符
问题描述
我正在编写具有以下功能和 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
是指向 a 的指针const
T
。这个
T* const p
是指向 a 的const
指针T
。注意到区别了吗?在第一个示例中,指针指向的事物就是const
。在第二个示例中,指针本身就是const
. 尝试将a 强制转换void const*
为 amycustomStruct* const
意味着将指向某事物的指针强制转换为指向const
非某事物的指针const
(只是指针本身恰好是const
)。因此,这个演员表会删除一个const
限定符,这是无法static_cast
做到的……</p>
你可能想写
const mycustomStruct* pFlmcCtrl = static_cast<const mycustomStruct*>(pMdbCluster);
推荐阅读
- web-config - Iplanet Web 服务器动态目录访问
- routing - istio egressgateway:通过静态 IP 进行路由
- typescript - 如何在 google.maps.events.addListener(marker, 'dragend', function() { }) 中使用 storage.set(); 在离子 3
- spring-boot - 如何手动配置 JAXBContext?
- c++ - 使用 qt 作为新进程执行批处理文件
- makefile - GNU Makefile 包含的文件(重新)制作顺序
- ios - CLLocationManager EXC_BAD_INSTRUCTION
- javascript - TypeScript - 通用函数的 ReturnType 不起作用
- javascript - Sharethis 脚本被另一个脚本替换
- excel - 为什么文件关闭后文件仍保留在项目窗口中?