VS Code编译C++项目遇链接错误、构造函数重载歧义问题求助
错误原因及修复方案
构造函数重载歧义错误修复
头文件中同时存在两个支持无参调用的构造函数:
- 所有参数均配置了默认值的多参构造函数,不传参数即可调用
- 单独声明的无参默认构造函数
编译器执行无参构造时无法匹配到唯一的调用目标,因此抛出歧义报错。
修复方案二选一:
- 直接删除无参默认构造函数的声明与空实现,仅保留带默认参数的多参构造函数即可覆盖无参构造场景
- 移除多参构造函数的所有默认参数,仅保留无参默认构造函数
MovieMonster.cpp构造函数实现修复
当前MovieMonster.cpp中写的MovieMonster(p, h, xtr, smrt);是非法的构造函数实现,属于全局变量声明代码,需要替换为正确的类成员实现:
如果选择保留带默认参数的多参构造函数,补充以下实现:
MovieMonster::MovieMonster(int power, double health, bool intellect, bool xtrSize) : Power(power), Health(health), intellect(intellect), XtrSize(xtrSize) { }
如果选择保留无参构造函数,补充以下实现:
MovieMonster::MovieMonster() { }
编译命令修复
原有编译命令仅编译了CreateMonster.cpp,未关联编译MovieMonster.cpp,修复代码后需要执行完整编译命令:
g++ CreateMonster.cpp MovieMonster.cpp -o CreateMonster.exe
执行生成的CreateMonster.exe即可得到运行结果。
内容的提问来源于stack exchange,提问作者Dbody7983
相关产品推荐
相关产品推荐

