【发布时间】:2016-12-17 11:40:43
【问题描述】:
我为 C API 编写了一个 C++ 包装类。
我的包装类有一个在原始 API 中使用的 typedef 结构的私有实例成员。我不想修改API头文件,但我也想隐藏原始API的所有痕迹,所以我不想在包装类的头文件中包含原始API头文件。
我可能忽略了一些非常简单的东西,但我没有找到它。 PIMPL 是一种选择,但我更愿意在为一件小事重构整个代码库之前寻找替代方案。
wrapper.hpp
class myWrapper
{
public:
myWrapper();
private:
originalTypedef *original; // forward declaration needed for originalTypedef
};
wrapper.cpp
#include "wrapper.hpp"
#include "originalAPI.h"
myWrapper::myWrapper()
{
original = originalAPI_get();
}
Main.cpp
#include "wrapper.hpp"
int main()
{
myWrapper wrapper = new myWrapper();
}
【问题讨论】:
-
你能给我们一个minimal reproducible example好吗?
-
除了我提供的东西?我提供的内容更加连贯。
-
@user4581301 这是一个选项,但我想在重构代码以实现 PIMPL 之前寻求替代方案。
-
这当然不是minimal reproducible example!请至少提供一个不错的在线编译器的链接。
标签: c++ private encapsulation public