c++ - reinterpret_cast 到相同的类型
问题描述
考虑以下程序:
struct A{};
int main()
{
A a;
A b = a;
A c = reinterpret_cast<A>(a);
}
编译器(g++14)抛出一个关于invalid cast from type 'A' to type 'A'
. 为什么强制转换为相同类型无效?
解决方案
这是不允许的,因为标准是这样说的。
您可以使用一组相当有限的允许转换reinterpret_cast
。参见例如cppreference。例如,列出的第一点是:
1) 整数、枚举、指针或指向成员的指针类型的表达式可以转换为它自己的类型。结果值与表达式的值相同。(C++11 起)
但是,将自定义类型(没有指针!)转换为自身不在列表中。你为什么要这样做?
推荐阅读
- css - 为什么我的样式表被具有较低特异性的样式表忽略?
- c# - 在非托管资源上执行 P/Invoke 时,何时需要 GC.KeepAlive(this)?
- java - 为什么我能在日期到达博物馆 +7 小时?
- c# - 控制器从 application/json 有效负载中敏感地接受数据大小写
- git - “中止:没有名为选择器的模块!” 将 Mercurial 存储库推送到 Git 存储库时
- win32gui - 如何在 win32 gui 应用程序中使用另一个事件循环
- javascript - 如果输入不存在(在数据集中),则显示通用内容
- flutter - 有没有办法在颤动中更改版本代码
- php - 如何从正在变化的字符串值中获取特定数字;php
- vim - 搞砸了我的 vim 配色方案,无法恢复