从头文件c ++调用另一个头文件的内联函数

时间:2013-04-30 15:01:49

标签: c++

我有两个标题(.hh)文件,并且在这两个文件中都定义并实现了一些功能:

我想要它所以从头文件A中的实现调用另一个头文件的函数(让我们称之为B)。

这就是我所拥有的:

//headerA.hh
LSQUnit<Impl>::read(...args....)
   ...
callfunction(...args...);
}

其中call函数的实现在另一个头文件中,如下所示:

// 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中的内容?

1 个答案:

答案 0 :(得分:2)

似乎callFunction是模板类的非静态成员函数。调用它的核心方式是

LSQUnit<Impl> something;
something.callFunction(...);

这意味着您需要拥有callFunction的类类型的对象。在这种情况下something


此语法

LSQUnit<Impl>::callfunction(...args...)

用于调用static成员函数。