在标题中隐藏C ++类,而无需使用未命名的名称空间
||
我正在编写一个C ++标头,其中定义了一个
class A {
// ...
};
我想对外界隐藏(因为它可能会更改,甚至在此标头的未来版本中也会被删除)。
在同一标头中还存在一个类B,该类具有作为对象的类A的对象:
class B {
public:
// ...
private:
A a_;
};
隐藏A类与外界隔离的正确方法是什么?
如果将A的定义放在未命名的命名空间中,则编译器会发出警告,因此我认为由于内部链接的问题,我应该做其他事情。
没有找到相关结果
已邀请:
6 个回复
襄挟款籍
荒劫娇噬
惯用语。替代解决方案是将要隐藏的类放入嵌套的命名空间中,该命名空间通常称为“ 4”。但这并不能使它完全私有,因为用户仍然可以接触到它的依赖关系,并且可以直接使用它。
呈辖玫割善
持
的对象,而应由hold7ѭ代替(或
或
等)。这样,“ 5”仅需要向前声明“ 11”,就可以在“ 5”的源文件中完全定义“ 11”。
疾很毋悲
然后将A的定义放入B实现(即.cpp)文件中。
陈獭
械怒等
任何在“ 4”名称空间中弄乱东西的人都会自找麻烦。甚至可能使它更加晦涩
现在,任何接触内部任何物体的人都应该被射中脚。 :)