微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。