首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Geant4源代码中声明但从未定义的方法

在Geant4源代码中声明但从未定义的方法
EN

Stack Overflow用户
提问于 2011-06-06 00:08:21
回答 2查看 294关注 0票数 2

在我搜索Geant4源代码的过程中,我多次注意到有一些方法是在头文件中声明的,但从未使用任何相关的代码进行定义(请原谅我的行话中的错误(我是一名工程师))。

例如,定义如下的方法:

代码语言:javascript
复制
G4TrackVector* GetfSecondary();

它在头文件或源文件中没有实现,不是虚拟的,但是它在各种场合被程序使用,并且程序从这个编译的代码运行。起初,我认为这只是doxygen的一些很酷的代码隐藏技巧,但现在我发现它不是!这在代码中很常见。

有人能解释一下发生了什么事吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2011-06-06 00:24:40

GetSecondary()函数是G4Step类(在G4Step.hh中定义)的成员,并在G4Step.icc中以内联方式实现。G4Step.hh的末尾包含了G4Step.icc。

我猜您是在源代码目录中查找实现,而不是在include目录中查找,但是include目录是内联实现的合适位置。

将来,如果您使用*nix,您可以尝试从项目目录的顶部使用grep -r <FunctionName> .来查找所有提到的函数,其中应该包括实现。

票数 1
EN

Stack Overflow用户

发布于 2011-06-06 00:17:47

如果是这种情况,代码将无法编译。你只是没有在正确的地方寻找它的定义。或者只是没有注意到它。调用未定义的已声明函数是错误的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6244084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档