错误LNK2001继承问题

时间:2014-05-10 05:21:00

标签: c++ inheritance

我正在做一个家庭作业问题,我们必须使用继承。 (我对继承还不是很好)。我们要做一个父类" card_games"有两个叫做" gofish"和"扑克"。我们有一个模板,我们的主要必须遵循,其余的设计由我们决定。这是我的头文件:(名为" classes.h")

#include <vector>

using namespace std;

struct cards{
  int rank;
  char suit;
};

class players{
  public:
   int points;
   int active;
   vector<cards> cardhand;
   void printhand(players *gameplayers, int person);
};

class card_games{
  protected:
    players *gameplayers;
    void player_make();
  public:
    virtual void play();
};


class poker :public card_games{
  public:
   void play();
 };


 class gofish :public card_games{
  public:
void play();
  };





void player0_play(players *gameplayers, cards *cardlist, int people);
void createdeck(cards *cardlist);
void shuffle(cards *cardlist);
void deal(cards *cardlist, int people, players *gameplayers);
int getplayers();

我已确定错误与我的虚拟通话有关。具体错误是:

cardgames_play.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall card_games::play(void)" (?play@card_games@@UAEXXZ)

我相信这会导致我的下一个错误:

card_games.exe : fatal error LNK1120: 1 unresolved externals

无论如何我的虚拟虚函数出错了。 这是我的主要功能:

#include <iostream>
#include "classes.h"



int main(){
  card_games *game;
  int opt;
  game = NULL;
  cout << "Poker 1, Go Fish 2" << endl;
  cin >> opt;
  if (opt == 1)
    game = new poker;
  else if (opt == 2)
    game = new gofish;
  game->play();

  return 0;
}

我们应该大致使用这个模板。如果我理解正确的话,我正在创建一个名为game的Card_game类的实例,然后将游戏分配给gofish或者扑克的实例。然后我取消引用&#34;游戏&#34;到&#34; play();&#34;功能。我剩下的代码,我有一个

void gofish::play(){ blah blah }

void poker::play(){
blah blah
}

我的其余代码可以使用。

非常感谢有关此错误的任何帮助。谢谢!

P.S。我在Windows 8上使用visual studio 2013。

1 个答案:

答案 0 :(得分:1)

void play();中的方法card_games没有正文,而且不是纯虚拟的。只做改变:

class card_games{
protected:
  players *gameplayers;
  void player_make();
 public:
  virtual void play()=0; //make it pure virtual
};