为什么int不能通过reinterpret_cast转换为struct呢

如下代码:reinterpret_cast不是二进制重新解释吗?为什么int不能转换为struct呢?

typedef struct {
    uint32_t num : 1;
    uint32_t unused : 31;
} Test;

int main(){
    uint32_t test_num = 1;
    //Test tte;
    //memcpy(&tte, &test_num, sizeof(test_num)); //这样可以正确拷贝
    Test tte = reinterpret_cast<Test*>(&test_num); //但是这样就报错:错误:conversion from ‘Test*’ to non-scalar type ‘Test’ requested
    printf("%d,%d\n", tte.num, tte.unused);
阅读 1.8k
1 个回答

Test tte = reinterpret_cast<Test*>(&test_num); ==>
Test *tte = reinterpret_cast<Test*>(&test_num);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题