我正在尝试编写一个包装类,该包装类将另一个类包装,这些类包含基于c的头文件和函数。
Here是我试图找到解决方法的原始问题。
这是调用c函数的类,应进行封装:
#include "c_header.h"
class A
{
public:
void foo () {
function(); //calling a function of the c based library
};
};
这是我创建包装器类(.lib)来封装类A的方法:
#include "A.h"
class wrapper
{
public:
void test()
{
wa-> foo()
};
private:
A* wa;
};
这是一个测试项目,我希望在其中调用包装器类库而无需了解类A(c_header.h及其功能)。
#include "wrapper.h"
void main(){
wrapper *w = new wrapper;
w->test();
}
测试主程序不会编译,并且会发出链接程序问题,抱怨类A中的函数(此处为 function())。
代码在Windows7和Visual Studio2015中。
有人可以帮我真正地封装/包装另一个类而不需要头文件吗?
谢谢。
答案 0 :(得分:2)
您需要告诉编译器/链接器它是一个C头文件:
extern "C" {
#include "c_header.h"
}