gpt4 book ai didi

c++ - 如何在 C++ 中隐藏类的某些字段

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:42 25 4
gpt4 key购买 nike

我想开源一个项目,但是我的头文件是这样的:

class Foo {
public:
int bar;
int super_secret_field;
};

我希望开源 header 有 bar 字段,但没有 super_secret_field。我仍然想要一个带有 super_secret_field 的闭源版本。

我不能使用两个单独的头文件,因为这样使用 Foo 的类将有奇怪的包含。我可以用#includes 做一些 hacky,然后在发布的版本中删除它们,但我宁愿不这样做。

有没有更好的办法?

最佳答案

我相信您的问题的解决方案是 PIMPL成语。

在您的情况下,它看起来像:

// .h
class SecretType; // forward decl

class Foo {
public:
int bar;
SecretType* secret_field;
};

并且在 .cpp 中,您将包含包含 SecretType 声明的 header 。这实际上对您的库的用户隐藏了 SecretType 的详细信息。

P.S:我将类型从 int 更改为 class 以使解释更完整一些。

关于c++ - 如何在 C++ 中隐藏类的某些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22107413/

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