我有这个“多重定义”错误,不知道谁来修正它。
header.h
#ifndef HEADER_H
#definde HEADER_H
enum Gamestate{
MENU,
PLAY,
PAUSE,
GAMEOVER
};
Gamestate GAMESTATE = MENU;
#endifmain.cpp
#include "header.h"
switch(GAMESTATE){...}如果我把Gamestate =菜单放在header.cpp中,main.cpp就不知道变量了。如果我用这种方式编译它,就会得到多个Def。错误。
发布于 2016-01-31 11:17:47
您应该在标题中声明全局变量extern:
#ifndef HEADER_H
#definde HEADER_H
enum Gamestate{
MENU,
PLAY,
PAUSE,
GAMEOVER
};
extern Gamestate GAMESTATE;
#endif并在任何.cpp文件中提供一个定义:
Gamestate GAMESTATE = MENU;发布于 2016-01-31 11:17:49
这意味着头“header er.h”包含在多个编译单元中。
在这种情况下,在包含标头的每个模块中定义变量GAMESTATE。
您应该以以下方式声明变量,而不使用其定义的标头
extern Gamestate GAMESTATE;然后,例如在main.cpp中定义如下
Gamestate GAMESTATE = MENU;https://stackoverflow.com/questions/35113150
复制相似问题