2016-01-31 62 views
0

我有這個「多個定義」錯誤,不知道誰來解決它。枚舉標題多個缺陷

header.h

#ifndef HEADER_H 
    #definde HEADER_H 

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

#endif 

的main.cpp

#include "header.h" 

switch(GAMESTATE){...} 

如果我把遊戲狀態的遊戲狀態=菜單;在header.cpp main.cpp中不知道變量。如果我以這種方式編譯它,我會得到多個Def。錯誤。

回答

2

您應該聲明全局變量extern在標題:

#ifndef HEADER_H 
#definde HEADER_H 

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

extern Gamestate GAMESTATE; 

#endif 

並且您的任何.cpp文件提供了一個定義:

Gamestate GAMESTATE = MENU; 
+0

非常感謝。爲我工作 – Bruno

1

這意味着頭「header.h」是包括在多個編制單位中。

在這種情況下,變量GAMESTATE在每個包含標題的模塊中定義。

你應該聲明變量沒有它定義在頭下面的方式

extern Gamestate GAMESTATE; 

,然後例如在main.cpp中定義它像

Gamestate GAMESTATE = MENU;