C++-使用来自不同头文件、相同命名空间的枚举
C++ - Use enum from different header file, same namespace
我希望能够使用在一个文件中定义并在其他文件中使用的枚举类。当我尝试时,我只得到这个错误: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
的值,因为它们不在标头中。
相关文章:
- 如何公开库的枚举,以便我的代码不必键入整个命名空间来使用该枚举?
- 如何理解c++中在命名空间内部定义的枚举类型enum
- C++-使用来自不同头文件、相同命名空间的枚举
- 访问向量字段的键 - 枚举类还是命名空间中的枚举?
- 枚举类不是类或命名空间
- 在命名空间中使用枚举
- 枚举、类、命名空间和长名称
- C++11 枚举类命名空间块
- 类名和枚举值之间的冲突:无需命名空间即可解析
- 命名空间中的doxygen枚举
- 在不膨胀命名空间的情况下在C++中声明枚举的好方法
- 将C++命名空间枚举包装到C接口
- 在类中映射命名空间枚举
- 空的、未命名的枚举说明符的合法性
- 不是创建模板类后的类、命名空间或枚举
- 不同文件中同一命名空间中的 2 个不同枚举中的相同标识符
- 或命名空间中的枚举
- is_error_code_enum<>枚举必须仅在全局命名空间中定义?
- C++ 定义不同命名空间的枚举
- ' static constexpr auto '数据成员初始化为未命名的枚举