我希望能够使用在一个文件中定义并在其他文件中使用的枚举类。当我尝试时,我只得到这个错误: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
的值,因为它们不在 header 中。
关于C++ - 使用来自不同头文件、相同命名空间的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58582145/