C ++在'{'标记之前的预期类名。遗产

时间:2010-01-25 01:29:40

标签: c++ inheritance

我一直在谷歌上搜索并阅读此内容并没有得到答案,也许有人可以帮我解决这个问题。

我希望我的UserPile类能够从我的CardPile类访问数据成员和类成员函数。我一直在标题中提到错误。有人可以解释发生了什么吗?我看到的继承教程看起来就像我的代码,除了我的是多个源代码文件。

//CardPile.h
#include <iostream>
#include <string>
#include <vector>
using namespace std;

class Card;
class CardPile
{
   protected:
       vector<Card> thePile;
       //Card thePile[];
       int pileSize;
   public:
       CardPile();
       void insertCard( Card );
       Card accessCard( int);  
       void displayPile();
       void shuffle(); //shuffle the pile
       void initializeDeck(); //create deck of cards

       void deal(CardPile &, CardPile &);
       void showHand();
       bool checkForAce();
       void discard(CardPile);
       void drawCard(CardPile &);

 };

    //UserPlayer.h
 using namespace std;



class UserPlayer: public CardPile
{
    private:
        //CardPile userPile;                          
    public:
        UserPlayer(); 

};

//UserPlayer.cpp

#include "UserPlayer.h"
#include "CardPile.h"


UserPlayer::UserPlayer()
{

}

我在这个UserPlayer类中没有发生任何事情,因为我将使用基类中的函数,所以我想在开始编写之前至少看到它编译。<​​/ p>

感谢任何人的帮助。

2 个答案:

答案 0 :(得分:4)

如果您想在CardPile.h使用课程UserPlayer.h,则必须在CardPile中加入// CardPile.h: #ifndef CARDPILE_H #define CARDPILE_H class CardPile { // ... }; #endif

您还缺少标题中的包含警示,例如:

CardPile.h

如果没有这个,您可以在UserPlayer.cpp中有效地加UserPlayer.h两次 - 一次来自#include "CardPile.h",一次来一行{{1}}

答案 1 :(得分:1)

UserPlayer.h需要#include CardPile.h - 你的代码就是这种情况吗?