gpt4 book ai didi

c++ - 将 unsigned int 分配给结构中的数组枚举时出现编译错误

转载 作者:行者123 更新时间:2023-11-28 03:21:38 25 4
gpt4 key购买 nike

typedef struct {
uint64_t low;
uint64_t cache_size;
uint32_t range;
uint8_t cache;

/// Number of symbols in the tables
size_t count;

/// rc_encode()'s position in the tables
size_t pos;

/// Symbols to encode
enum {
RC_BIT_0,
RC_BIT_1,
RC_DIRECT_0,
RC_DIRECT_1,
RC_FLUSH,
} symbols[RC_SYMBOLS_MAX];

/// Probabilities associated with RC_BIT_0 or RC_BIT_1
probability *probs[RC_SYMBOLS_MAX];

} lzma_range_encoder;

//以上是结构

//下面是函数

static inline void
rc_bit(lzma_range_encoder *rc, probability *prob, uint32_t bit)
{
rc->symbols[rc->count] = bit; // problem code line 69
rc->probs[rc->count] = prob;
++rc->count;
}

//错误:错误 C2440:“=”:无法从“uint32_t”转换为“lzma_range_encoder::” 转换为枚举类型需要显式转换(static_cast、C 风格转换或函数风格转换)

'bit' 是 uint32_t,需要在 lzma_range_encoder->symbols 中存储(类型转换),但我无法以某种方式做到这一点。尝试了每一项属性(property)保险。此外,搜索了有关此的早期问题(static_cast 和所有但没有运气)

我想这是一个简单的问题。但我被困了 2 天。请帮忙。谢谢

最佳答案

在枚举中添加一个名称:

enum symbol_enum
{
// ...
} symbols[RC_SYMBOLS_MAX];

然后你可以转换为它:

rc->symbols[rc->count] = static_cast<lzma_range_encoder::symbol_enum>(bit);

附言。在 C++ 中,您不需要对结构或类使用 typedef。可以按原样使用普通结构名称。

关于c++ - 将 unsigned int 分配给结构中的数组枚举时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15264635/

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