用于 header 封装的 C++ 包装器

标签 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中。

谁能帮我真正封装/包装另一个类而不需要头文件?

提前致谢。

最佳答案

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

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

关于用于 header 封装的 C++ 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56114808/

相关文章:

c++ - 为 C 库编写 C++ 包装器

c++ - 如何将具有指针成员的非 QObject 类公开给 QML?

ruby - 如何将上下文传递给 C/C++ 中定义的 Ruby 方法

c++ - 计时代码 "C2440: ' <function-style-cast >' : cannot convert from ' _CR' to 'std::chrono::milliseconds' 中的一个奇怪错误

c++ - 运算符重载 C++ : write-only version

c++ - 覆盖 Makefile 中的宏常量

c - 测试 memcpy 函数

c++ - C/C++ 使用 tcmalloc

c++ - 模板化类的格式错误的非模板化方法的实例化

C++: FStream 认为它已经到达二进制文件的 EOF