首页 > 解决方案 > 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'. 为什么强制转换为相同类型无效?

标签: c++c++14standardsreinterpret-cast

解决方案


这是不允许的,因为标准是这样说的。

您可以使用一组相当有限的允许转换reinterpret_cast。参见例如cppreference。例如,列出的第一点是:

1) 整数、枚举、指针或指向成员的指针类型的表达式可以转换为它自己的类型。结果值与表达式的值相同。(C++11 起)

但是,将自定义类型(没有指针!)转换为自身不在列表中。你为什么要这样做?


推荐阅读