gpt4 book ai didi

c++ - 错误 : cast from ‘...’ to ‘unsigned int’ loses precision [-fpermissive]

转载 作者:行者123 更新时间:2023-11-30 02:44:08 27 4
gpt4 key购买 nike

在我的代码中,Graph 是一个类,它有一个成员 node,它是一个结构。当我做的时候

unsigned int id  = ((unsigned int)n - (unsigned int)_nodes) / sizeof(Graph::node); 

我收到以下错误(在 64 位 Linux 上编译):

error: cast from ‘Graph::node* {aka Graph::node_st*}’ to ‘unsigned int’ loses precision [-fpermissive]

用 Google 搜索并找到一个 similar question但在我看来答案在这里并不适用(请注意,我想获取对象的大小而不是它本身)。

提前感谢您的任何建议!

最佳答案

如果n_nodes指向 Graph::node ,即它们的类型是 Graph::node * (从错误消息来看似乎是这种情况),并且如果您想根据 Graph::node 的数量计算两者之间的“距离”元素,你可以这样做:

unsigned int id = n - _nodes;

在 C 和 C++ 中,指针算法将导致元素数量(而不是字节数)的差异。

为了便于移植,n_nodes必须指向 Graph::node 的连续 block 值,和 n应该在“之后” _nodes .如果你能得到负差异,你可以使用 ptrdiff_t输入而不是 unsigned int .

关于c++ - 错误 : cast from ‘...’ to ‘unsigned int’ loses precision [-fpermissive],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25497487/

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