我有 2 个标头 (.hh) 文件,并且在这两个文件中定义和实现了一些函数:
我想要它从头文件A中的实现中调用另一个头文件的函数(我们称之为B)。
这是我所拥有的:
//headerA.hh
LSQUnit<Impl>::read(...args....)
...
callfunction(...args...);
}
调用函数的实现在另一个头文件中,如下所示:
// headerB.hh
template<class Impl>
inline void
BaseDynInst<Impl>::callfunction (...args...){
....
}
我在 headerA.hh 中添加了这些:
#include "headerB.hh"
....
void call function (...args...)
但我在 headerA.hh 中得到了对 callfunction 的未定义引用
我也试过这些:
当我从 headerA.hh 调用它时
callfunction<BaseDynInst> callfunction (...args...)
或者在我的 headerB.hh 中添加这个实现:
LSQUnit<Impl>::callfunction(...args...)
但他们给了我更多的错误。
我知道将实现放在 .hh 中可能并不理想,但我使用的模拟器不是我创建的,所以我无法更改它,因为它会使事情变得更糟。
是否有可能是我想要的,或者唯一的解决方案是在 headerA.hh 中实现该函数?我想避免这种情况,因为它调用了所有存在于 headerB.hh 中的许多其他人?