你好。我正在为类里面的C++作业。我差不多完成了,但是似乎无法找出这些错误:

error LNK2001: unresolved external symbol "public: virtual void __thiscall HasQuarterState::dispense(void)const " (?dispense@HasQuarterState@@UBEXXZ) gumball.obj Gumball
error LNK2001: unresolved external symbol "public: virtual void __thiscall SoldState::turnCrank(void)const " (?turnCrank@SoldState@@UBEXXZ) gumball.obj Gumball
fatal error LNK1120: 2 unresolved externals C:\School Work\CS 492\Gumball\Debug\Gumball.exe Gumball

我去MSDN并查找LNK2001错误,但是获得了大量信息,并且由于我在CSDN方面的经验有限,因此我无法查看MSDN页面,因此我无法找出问题所在。

但是我确实相信问题出在我程序结构的方式上。我的老师说,如果需要的话,我们可能会使用一个.cpp文件,但是我想最后我对Visual Studios / C++的了解还不足以使这项工作有效。最终,我遇到了其他一些需要解决的问题,这些问题来自使用一个.cpp文件。

有问题的代码/文件在这里:http://codepad.org/LpBeJT2Y

这是一个很大的麻烦,但这就是我所做的:
  • 声明一个名为GumballMachine的类( undefined )
  • 定义一个名为State的类(该类又具有指向GumballMachine的指针)
  • 定义了其他几个继承自State
  • 的状态类
  • 定义类GumballMachine
  • 定义了其他状态类的原始定义中排除的几个功能。这是因为这些函数依赖于GumbballMachine的已定义函数,并且在定义GumballMachine函数之前不起作用。
  • void main()

  • 据我所知(凭我有限的VS / C++知识),代码看起来不错。也许有些经验丰富的人会捕获。关于如何解决这个问题的任何指示?

    谢谢您的帮助。

    最佳答案

    您已在HasQuarterState中声明了Dispense,但 undefined 它。该功能没有主体。同样在SoldState中使用turnCrank。

    10-08 04:58