2016-12-05 14 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是因为你做错了。卡片头进入播放器头。 –