gpt4 book ai didi

c++ - 我不能将大小为 8 字节的类类型转换为 uint64_t 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:17:09 26 4
gpt4 key购买 nike

假设我们有以下代码:

class A {
uint32_t X;
uint32_t Y;
};

int main ()
{
A a;
uint64_t num = (uint64_t)a;
}

编译器给出错误:“无法从 A 转换为 uint64_t。未定义用户定义的转换运算符。”

错误是预期的吗?如果是,为什么?

最佳答案

您需要明确地将一个值的 32 位复制到 64 位值的高 32 位,并将其他 32 位复制到 64 位值的低 32 位。

所有其他方法在技术上都是未定义的行为(尽管如果您足够了解您的实现细节,它们就可以工作)。

class A
{
uint32_t X;
uint32_t Y;
uint64_t to64()
{
// convert X and Y to unsigned 64-bit ints
uint64_t x64 = X;
uint64_t y64 = Y;
// left-shift the 64-bit X 32 bits
x64 <<= 32;

// return the sum
return( x64 + y64 );
}
};

您可以用更少的代码来完成,但这显示了您需要逐步完成的工作。

关于c++ - 我不能将大小为 8 字节的类类型转换为 uint64_t 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31967891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com