gpt4 book ai didi

c++ - 如何正确包装第 3 方库结构?

转载 作者:行者123 更新时间:2023-11-28 03:50:15 25 4
gpt4 key购买 nike

在我的项目中,我使用了一个不断变化的第 3 方库。我有这个库的包装器类(桥接模式 + Pimpl 模式)。因此,除了包装器实现之外,我的任何来源都看不到该库。这个库有一个 Options 结构,例如

struct Options {
double distance;
double weight;
int num_rabbits;
// etc
};

我希望这个结构在 GUI 模块中可用,以构建一个允许设置这些选项的对话框。我需要为它创建一个包装器结构吗?例如

struct MP_ThatLibOptions {
// exact member copy
double distance;
double weight;
int num_rabbits;
// etc
};

或者我应该直接将该结构头包含到我的源代码中吗?

wrapper 的缺点是:复制粘贴,结构之间转换的额外代码。direct include 的缺点是:打破了 pimpl 习惯用法。

这个问题是否还有其他解决方案?

另外我想强调的是,第 3 方库在不断变化,因此我必须采用我的源代码来支持库的每个新版本。

最佳答案

Options 结构似乎是公共(public) API 的一部分,而不是 pimpl 习语旨在隐藏的私有(private)实现,因此您似乎应该在源代码中包含 header 。

如果你这样做,当第 3 方代码发生变化时,唯一容易被破坏的代码是直接使用 Options 结构成员的代码,但大概当它发生变化时,你的代码无论如何都需要适本地改变,因为这听起来像是一个 API 更改,所以看起来您已经被覆盖了。

关于c++ - 如何正确包装第 3 方库结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com