gpt4 book ai didi

c++ - 在不使用未命名命名空间的情况下在 header 中隐藏 C++ 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:41 29 4
gpt4 key购买 nike

我正在编写一个 C++ 头文件,我在其中定义了一个

class A {
// ...
};

我想对外界隐藏(因为它可能会改变,甚至会在这个标题的 future 版本中被删除)。

在同一个标​​头中还有一个类 B,它有一个类 A 的对象作为成员:

class B {
public:
// ...

private:
A a_;
};

什么是对外界隐藏 A 类的正确方法?

如果我将 A 的定义放在未命名的命名空间中,编译器会发出警告,因此我认为,由于内部链接的问题,我应该做其他事情。

最佳答案

在 C++ 中正确的做法是 PIMPL成语。替代解决方案是将要隐藏的类放入嵌套命名空间,通常称为 detail。但这不会使其完全私有(private)化,因为用户仍将暴露于其依赖项,并且能够直接使用它。

关于c++ - 在不使用未命名命名空间的情况下在 header 中隐藏 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780918/

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