问题描述:
在win32应用程序项目Project1中的Algorithm.h头文件中,定义了一个类Algorithm,并声明了如下:
virtual void initialize();
virtual void nextStep() = 0;
virtual void shutdown();
在Algorithm.cpp文件中实现了这第一个和第三个函数
在win32 DLL项目Project2的HanoTower.h头文件中定义了类HanoTowerAlgorithm,继承自Algorithm类,HanoTower.cpp实现它重载了三个基类函数。
现在我编译Project2时,提示说“无法解析的外部符号”,“Algorithm::initialize@...”和“Algorithm::shutdown()@...”。
为什么纯虚函数不会报错?是不是因为纯虚函数没有函数体?经过几番尝试,我发现基类函数的声明和实现必须放在一起,也就是说,我把基类函数实现代码从cpp移到h文件就对了。但这又是为什么呢?具体原因现在也不知道。我只知道模板类必须这样,但是我没有使用模板啊。网上貌似没有这方面的东东。
这个问题留着先,以后说不定能解决,或者大家知道是怎么回事,麻烦告知一声,谢了先。