VMware Ubuntu 20.04安装GODDeSS包时Makefile Error 2问题求助
解决GODDeSS编译时的函数参数不匹配错误
嘿,你遇到的问题和Python兼容性完全没关系哦!这是C++函数声明与定义参数类型不匹配导致的编译错误,我来给你一步步讲清楚怎么修复:
错误原因分析
从报错信息能看到两个核心问题:
- 函数声明和定义的参数类型不一致:
- 头文件
Properties.hh里声明的parseTabular函数参数是std::ifstream& in(引用类型) - 但源文件
Properties.cc里的定义却是std::ifstream* in(指针类型),编译器找不到对应声明,所以报错
- 头文件
- 函数调用时的参数类型不匹配:
调用parseTabular时传了指针&in,但函数需要的是引用类型,导致类型转换失败
具体修复步骤
1. 修改函数定义的参数类型
打开文件 /home/simulation/goddess/source/G4BasicObjects/G4PropertyFileReadInTools/src/Properties.cc,找到第72行的函数定义:
void Properties::parseTabular(std::ifstream* in, std::string key) {
把它改成和头文件一致的引用类型:
void Properties::parseTabular(std::ifstream& in, std::string key) {
同时,记得把函数内部所有用到in->的地方改成in.(因为引用使用点操作符,指针才用箭头)。
2. 修改函数调用的参数
还是在Properties.cc里,找到第191行的调用代码:
parseTabular(&in, result[1]);
把&in改成in(直接传递对象本身,编译器会自动转换为引用):
parseTabular(in, result[1]);
最后验证
改完这两处之后,重新执行make -j2 install,应该就能顺利编译了。
内容的提问来源于stack exchange,提问作者Abhinab Mukhopadhyay
相关产品推荐
相关产品推荐

