reinterpret_cast结构到固定大小的数组
reinterpret_cast structure to a fixed size array
我有一个结构 S
,它将两个固定大小的 T
类型的数组打包在一起。
template<typename T>
struct S {
array<array<T, 20>, 10> x1;
array<T, 10> x2;
};
我想获取对大小为 210 的 T
类型元素的一维数组的引用。我尝试使用 reinterpret_cast
,但编译器不会接受这个:
S<T> s;
array<T, 210>& x = *reinterpret_cast<S*>(&s);
我知道 有效:
S<T> s;
T* x = reinterpret_cast<T*>(&s);
但是有没有办法从该结构中获取对固定大小的一维数组的引用?我尝试使用 #pragma pack(pop, 1)
但没有成功。
reinterpret_cast<array<T, 210>&>(s)
应该这样做,如果那真的是你想要的。
它应该是明确定义的,因为这些是标准布局类型(假设 T
是)。但你如履薄冰
我有一个结构 S
,它将两个固定大小的 T
类型的数组打包在一起。
template<typename T>
struct S {
array<array<T, 20>, 10> x1;
array<T, 10> x2;
};
我想获取对大小为 210 的 T
类型元素的一维数组的引用。我尝试使用 reinterpret_cast
,但编译器不会接受这个:
S<T> s;
array<T, 210>& x = *reinterpret_cast<S*>(&s);
我知道
S<T> s;
T* x = reinterpret_cast<T*>(&s);
但是有没有办法从该结构中获取对固定大小的一维数组的引用?我尝试使用 #pragma pack(pop, 1)
但没有成功。
reinterpret_cast<array<T, 210>&>(s)
应该这样做,如果那真的是你想要的。
它应该是明确定义的,因为这些是标准布局类型(假设 T
是)。但你如履薄冰