枚举标头多个定义
Enum Header Multiple Defnitions
>我遇到了这个"多个定义"错误,不知道该谁来修复它。
标题.h
#ifndef HEADER_H
#definde HEADER_H
enum Gamestate{
MENU,
PLAY,
PAUSE,
GAMEOVER
};
Gamestate GAMESTATE = MENU;
#endif
主.cpp
#include "header.h"
switch(GAMESTATE){...}
如果我把 Gamestate GAMESTATE = MENU; 放在标题中.cpp main.cpp不知道变量。如果我以这种方式编译它,我会得到多个 Def .错误。
您应该在标头中声明全局变量extern
:
#ifndef HEADER_H
#definde HEADER_H
enum Gamestate{
MENU,
PLAY,
PAUSE,
GAMEOVER
};
extern Gamestate GAMESTATE;
#endif
并在任何.cpp
文件中提供定义:
Gamestate GAMESTATE = MENU;
这意味着标头"header.h"包含在多个编译单元中。
在这种情况下,变量 GAMESTATE 在包含标头的每个模块中定义。
您应该通过以下方式在标头中声明变量而不定义其
extern Gamestate GAMESTATE;
然后例如在 main 中.cpp将其定义为
Gamestate GAMESTATE = MENU;
相关文章:
- 如何正确实现和访问运算符的各种自定义枚举器
- C++:如何在声明枚举类的模板类主体之外定义枚举类?
- 如何在 std::p air 中使用 System::Guid 和自定义枚举?
- 当在基类中定义枚举时,qml中的Q_ENUM未定义值
- 在 FlatBuffer 中使用自定义枚举
- 在宣布后定义枚举 - 比利亚利
- 是否可以定义一个宏来定义枚举类和返回枚举元素计数的 GetCount() 方法
- 类型定义枚举"member"
- 使用对其他枚举值的操作定义枚举元素值
- 具有自定义枚举C++类
- 是否可以手动定义枚举类的转换
- 我们可以在函数中定义枚举吗?
- 在类内部的结构中定义枚举
- 在 c++ 中定义枚举类型的静态变量
- 重新定义枚举的比较运算符
- 在类或文件中定义枚举
- 可以根据同一枚举类型中的其他枚举器来定义枚举器吗
- 检查是否已定义枚举成员
- 在哪里定义枚举
- 在类外部使用在类内部声明的类型定义枚举