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

时间:2011-06-05 16:08:21

标签: c++ methods header implementation hidden

在我搜索Geant4源代码的过程中,我注意到有几次方法在标题中声明但从未使用任何相关代码定义(请原谅我的术语中的任何错误(我是工程师))

一个例子是定义如下的方法:

G4TrackVector* GetfSecondary();

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

有人可以解释发生了什么吗?

由于

2 个答案:

答案 0 :(得分:1)

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

我猜你是在查看源目录而不是实现的include目录,但include dir是内联实现的适当位置。

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

答案 1 :(得分:0)

如果是这种情况,代码将无法编译。你只是没有找到合适的位置来定义它。或者只是没有注意到它。调用没有定义的声明函数是错误。