gpt4 book ai didi

c++ - 具有基于位置的枚举编译错误的结构

转载 作者:搜寻专家 更新时间:2023-10-31 00:53:40 25 4
gpt4 key购买 nike

这个:

enum Id {
START,
INDENT
};

struct State {
int line;
int column;
Id id;
};

...

lexer::State state = {0};

编译。

但是如果我将 Id id 作为结构的第一个元素,它就会停止。谁能简单地向我解释一下为什么这两个结构会受到不同的对待。

最佳答案

你得到一个错误,因为 int 类型的常量零与 Id 类型的初始字段 id 不兼容,除非

1) 你添加一个类型转换,像这样

lexer::State state = {static_cast<Id>(0)};

2) 或者使用 START 代替零,像这样

lexer::State state = {START};

3) 或降零以对整个 struct 进行值初始化(推荐):

lexer::State state = {};

关于c++ - 具有基于位置的枚举编译错误的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47962914/

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