用于标头封装的c ++包装器

时间:2019-05-13 14:48:44

标签: c++ c wrapper encapsulation

我正在尝试编写一个包装类,该包装类将另一个类包装,这些类包含基于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中。

有人可以帮我真正地封装/包装另一个类而不需要头文件吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

您需要告诉编译器/链接器它是一个C头文件:

extern "C" {
#include "c_header.h"
}