我正在编写一个 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/