我希望能够使用在一个文件中定义并在其他文件中使用的枚举类。当我尝试时,只会出现此错误: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;
};
}
您不会在声明和定义中拆分枚举,所以
enum class Animal
{
Lion,
Elefant,
Monkey
};
应该在标题中,而不在源文件中。
[请记住,当您将标头包含在源文件中时,此源文件只能“查看”在此标头中声明的内容。在您的情况下,当编译器处理zoo.cpp时,它无法“看到” Animal
的值,因为它们不在标题中。