在C++中创建对象时出现"未解析的外部符号"错误

mpo*_*lin 0 c++ inheritance class

我是一个经验丰富的程序员,但我现在正在深入研究C++,而且......比...更难......比PHP和Python更难.尝试从某些类创建对象时,我一直有未解决的外部错误.它分为多个标题和文件,但这是我的一个类的基本想法:

die.h:

#ifndef DIE_H
#define DIE_H

using namespace std;

class Die {
 public: 
  int throwDie();
  Die();
};

#endif
Run Code Online (Sandbox Code Playgroud)

die.cpp

#include <iostream>
#include <cstdlib>
#include "Die.h"

using namespace std;

int Die::throwDie() 
{
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

sixsidedie.h

#ifndef SIXSIDEDIE_H
#define SIXSIDEDIE_H

#include "Die.h"

using namespace std;

class SixSideDie : public Die
{
 public:
  SixSideDie();
  int throwDie();

 private: 
         int randNumber;
};

#endif
Run Code Online (Sandbox Code Playgroud)

sixsidedie.cpp

#include <iostream>
#include <cstdlib>
#include <time.h>
#include "Die.h"
#include "SixSideDie.h"

using namespace std;

const int SIX_SIDE = 6;

int SixSideDie::throwDie()
{
 srand((unsigned int)time(0));
 SixSideDie::randNumber = rand() % SIX_SIDE + 1;
 return SixSideDie::randNumber;
}
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include <iostream>
#include <cstdlib>
#include "Die.h"
#include "SixSideDie.h"
#include "TenSideDie.h"
#include "TwentySideDie.h"

using namespace std;

int main() 
{
 Die* myDice[3];
 myDice[0] = new SixSideDie();
 myDice[1] = new TenSideDie();
 myDice[2] = new TwentySideDie();

 myDice[0]->throwDie();
 myDice[1]->throwDie();
 myDice[2]->throwDie();

 system("pause");
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

它一直告诉我,我在上面创建的每个对象都是一个未解析的外部符号,我只是不知道为什么.有什么想法吗!?

Jam*_*lis 5

您声明了一个构造函数Die但从未定义它.

此外,throwDie如果你打算在派生类中覆盖它的行为,你几乎肯定想要是虚拟的,并且你永远不应该using namespace std;在头文件中使用(许多人,包括我在内,都会争辩说你不应该在文件范围内使用它)在所有).