C ++中的枚举正向声明给范围错误?

问题描述

我正在关注有关C ++的教程,我们已经涉及了枚举类型的主题。 Here is a link to the exact lesson in the website if anyone is curious

他们声明,如果您指定所使用的int类型,则可以转发声明一个枚举,因此我尝试了如下操作:

enum Item : short;
 
int main()
{
    Item item { ITEM_SWORD };
    std::cout << "Item: " << item << '\n';
    
    return 0;
}
 
enum Item : short
{
    ITEM_SWORD,ITEM_SHEILD,ITEM_TORCH,};

但这产生了一个错误:在此范围内未声明'ITEM_SWORD'。我阅读了针对同一问题的其他问题的一些回复,并且该教程的一位管理员的一个回复读到了这样的内容:“在定义枚举之前,您不能使用枚举器。向前声明仅允许您声明枚举变量(例如,作为函数的前向声明中的参数)。”有人可以解释清楚吗?我更改了代码,是因为我解释了他对以下内容的反应方式:

enum Item : short;
void printItem(Item item);
 
int main()
{
    Item item { ITEM_SWORD };
    std::cout << "Item: " << printItem(item) << '\n';
    
    return 0;
}
 
enum Item : short
{
    ITEM_SWORD,};
 
void printItem(Item item)
{
    if (item == ITEM_SWORD)
    {
        std::cout << "Sword\n";
    }
    if (item == ITEM_SHEILD)
    {
        std::cout << "Sheild\n";
    }
    if (item == ITEM_TORCH)
    {
        std::cout << "Torch\n";
    }
    else
    {
        std::cout << "???\n";
    }
}

但这只会导致大量其他根本无法清除的错误和警告。有人可以解释一下教程管理员在回应中的意思吗?一个具体的例子将不胜感激,甚至可能是几个。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...