【发布时间】:2015-10-22 14:48:03
【问题描述】:
我有一个使用另一个库 (dll) 中的类的库
//DLL External library API: Foo library
namespace foo{
class Component( Elemement e ) {
...
}
} //foo namespace
现在我的库需要使用 foo dll 并使用它的一些功能和类,但不暴露 Foo 库类型而是一些“翻译”
// my developed library "Core"
namespace core{
class Component( Element e ){
...
}
}
公共 API 将公开类 core::Component 和 core::Element,但实际上这些应该是对 foo::Component 和 foo::Element 的直接翻译。还想象一下,对于需要包装以公开的许多其他类,需要进行这种转换。 处理此问题的最佳方法是什么?
【问题讨论】:
-
你写“翻译”是什么意思?
-
我需要一个与 foo::Element 完全相同的类 core::Element,我只是不想公开 foo 类而是它的一个 wapper。在这种情况下,包装器只是隐藏底层类不是在我的库中开发的,而是在外部库(foo)中开发的,有什么技巧可以做吗?像 typedefs,还是使用(在 c++11 中)?
-
如果是一样的,为什么要隐藏呢?
-
不同的客户,提供相同的功能。
-
听起来你想要一个 PIMPL:stackoverflow.com/questions/60570/…