我遇到了这个“多个定义”错误,不知道应该由谁来解决。

头文件

    #ifndef HEADER_H
     #definde HEADER_H

     enum Gamestate{
         MENU,
         PLAY,
         PAUSE,
         GAMEOVER
        };
     Gamestate GAMESTATE = MENU;

#endif


main.cpp

#include "header.h"

switch(GAMESTATE){...}


如果我把Gamestate GAMESTATE = MENU;在header.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;

10-06 01:52