C ++-使用来自不同头文件,相同名称空间的枚举

问题描述 投票:0回答:1

我希望能够使用在一个文件中定义并在其他文件中使用的枚举类。当我尝试时,只会出现此错误:enum "Animal" has no member "Lion"

我找不到任何回答我问题的帖子。

以下是我所想到的一个例子:zooanimals.h

#pragma once

namespace Zoo
{
    enum class Animal;
}

zooanimals.cpp

#include "zooanimals.h"

namespace Zoo
{
    enum class Animal
    {
        Lion,
        Elefant,
        Monkey
    };
}

zoo.h

#pragma once

namespace Zoo
{
    class Visitor;
}

zoo.cpp

#include "zoo.h"
#include "zooanimals.h"

namespace Zoo
{
    class Visitor
    {
        Animal favoriteAnimal = Animal::Lion;
    };
}
c++
1个回答
1
投票

您不会在声明和定义中拆分枚举,所以

enum class Animal
{
    Lion,
    Elefant,
    Monkey
};

应该在标题中,而不在源文件中。

[请记住,当您将标头包含在源文件中时,此源文件只能“查看”在此标头中声明的内容。在您的情况下,当编译器处理zoo.cpp时,它无法“看到” Animal的值,因为它们不在标题中。

© www.soinside.com 2019 - 2024. All rights reserved.