拆分代码为头文件与cpp文件后,纯虚函数出现未定义引用错误
解决Book类成员函数未定义引用错误
这个错误属于链接阶段问题:拆分代码后,编译时只处理了main.cpp,但没有将classes.cpp的编译结果纳入链接流程,导致链接器找不到Book::getData()和Book::putData()的具体实现。
解决方法
命令行编译(以GCC为例)
将所有cpp文件一起编译链接,生成可执行文件:
g++ main.cpp classes.cpp -o book_app
执行生成的程序:
- Linux/macOS:
./book_app - Windows:
book_app.exe
IDE环境编译
如果使用VSCode、Code::Blocks、Visual Studio等IDE,确保classes.cpp已经被添加到项目的编译文件列表中。多数IDE会自动识别同目录下的cpp文件,但如果是手动添加的文件,需要检查项目配置,确认该文件未被排除在编译流程外。
补充说明
拆分头文件与cpp文件后,每个cpp文件会被单独编译为目标文件(.o或.obj)。链接器需要将所有相关目标文件合并,才能找到函数的实现代码,否则就会抛出"未定义引用"的错误。
内容的提问来源于stack exchange,提问作者Saif eldeen Adel
相关产品推荐
相关产品推荐

