小编Alb*_*ria的帖子

C++ 11:将结构数组重新解释为struct的成员数组

请考虑以下类型:

struct S
{
    char v;
};
Run Code Online (Sandbox Code Playgroud)

给定一个数组const S,是否有可能以符合标准的方式将其重新解释为一个数组,const char其元素对应v于每个原始数组元素的成员值,反之亦然?例如:

const S a1[] = { {'a'}, {'4'}, {'2'}, {'\0'} };
const char* a2 = reinterpret_cast< const char* >(a1);

for (int i = 0; i < 4; ++i)
    std::cout << std::boolalpha << (a1[i].v == a2[i]) << ' ';
Run Code Online (Sandbox Code Playgroud)

上面的代码是否可移植,是否可以打印true true true true?如果没有,有没有其他方法来实现这一目标?

显然,可以创建一个新数组并使用v原始数组的每个元素的成员对其进行初始化,但整个想法是避免创建新数组.

c++ reinterpret-cast c++11

11
推荐指数
2
解决办法
275
查看次数

标签 统计

c++ ×1

c++11 ×1

reinterpret-cast ×1