链接器错误 - 未解析的外部符号

时间:2010-02-17 04:23:59

标签: c++ visual-studio visual-studio-2008 linker

你好。我正在为我的班级进行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错误,但是提供了大量的信息,我担心由于我在查看MSDN页面时对C ++的经验有限,我无法弄清楚出了什么问题。

但我确实认为问题来自于我构建程序的方式。我的老师说我们也可以使用一个.cpp文件,但我想最终我对Visual Studios / C ++的了解还不够。最后,我遇到了一些我必须解决的问题,这些问题来自于使用一个.cpp文件。

相关代码/文件位于:http://codepad.org/LpBeJT2Y

这是一个很大的混乱,但这就是我所做的:

  • 声明一个名为GumballMachine(无定义)的类
  • 定义一个名为State的类(后者又有一个指向GumballMachine的指针)
  • 定义了几个继承自State
  • 的其他州类
  • 定义班级GumballMachine
  • 定义了几个从其他状态类的原始定义中排除的函数。这是因为这些函数依赖于GumbballMachine的已定义函数,并且在定义GumballMachine函数之前无法工作。
  • void main()

据我所知(由于我对VS / C ++的了解有限),代码看起来很好。也许有一些有更多经验的人会抓住。有关如何解决这个问题的任何指示?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你已经在HasQuarterState中声明了分配但没有定义它。该功能没有身体。与SoldState中的turnCrank一样。

答案 1 :(得分:0)

在类SoldState中,未定义turnCrank。改变这个:
void turnCrank()const;
对此:
void turnCrank()const {cout<< “一些实施”<< ENDL; }

和其他功能类似。