2016-12-05 35 views
0

爲什麼編譯器給我一個錯誤Card deck[5]當兩個類在不同的文件中,但如果我把它們放在同一個文件中,編譯器會認可?兩類不同的頭文件,gcc,visual studio 2012

我確實在兩個文件中都包含了「.h」。

頁眉1

class Card 
{ 
    private: 

     char* card_name; 
     int  card_value; 
     Color card_color; 

    public: 
     Card(); 

     void set_card(char * buffer , Card& c); 
     Card get_card(int index,Card deck[]); 
     int  get_card_value(); 
     void print_card(); 

     ~Card(); 
}; 

頭2

class Player 
{ 


    private: 

     friend class Card; 
     char* name; 
     char* id; 
     int  wins; 
     int  losses; 
     int  remains_move; 
     struct Coordinate cord; 
     Card deck[MAX_CARDS]; 


    public: 



     Player(); 


     int  Player_Array_Size(char* Creation,const int MAX_PLAYERS); 
     void Player_Creation_File(char* Creation); 
     void Player_Simulation_File(char* Simulation,int Array_Size); 
     void set_player(); 
     Player* get_player(); 
     void print_player(); 
     void move_to_point(int x ,int y); 
     void attack_using_card(int Attacker ,int Defender,int Attack_card); 
     void win_match(); 
     void lose_match(); 


     ~Player(); 
+2

請嘗試創建[最小,*完整*和可驗證示例](http://stackoverflow.com/help/mcve)並向我們顯示。例如,何時何地以及如何包含頭文件,以及更重要的順序。 –

+1

你如何編譯你的代碼? – theVoid

回答

0

你可能有4個文件,card.h,card.cpp,player.h和player.cpp。 在player.h:

#include "card.h" 

class Player { ... }; 

在player.cpp:

#include "player.h" 

... 

在card.h:

class Player; // Forward declaration 

class Card { ... }; 

在card.cpp:

#include "card.h" 
#include "player.h" 

... 

這它。

+0

錯誤是c209:「plyaer :: deck」使用未分類的claas「卡」 –

+0

我做到了這一點:( 事實上,它在H和C的1個文件上工作令人沮喪 當我把它濺到2 H和2 C包括H文件 ,我得到copmpile錯誤 –

+0

c209是因爲你做錯了。卡片頭進入播放器頭。 –