假设我有 2 个类,我希望它们可见(在给定的头文件中),还有一个类是它们的祖先,我希望其中一个类仅对前面提到的两个类可见。在C++中如何实现不可见的类功能?
滥用class
充当namespace
会这样做。我不推荐这种模式。
class hidden_stuff {
private: // hide base from everyone
struct base {
// contents
};
public:
class derived1;
};
typedef class hidden_stuff::derived1 derived1;
class hidden_stuff::derived1
: private hidden_stuff::base {}; // private inheritance required
// or hidden_stuff::base is accessible as derived1::base
The real解决方案(尽管在技术上不能满足问题)
更好的解决方案是使用明确命名的namespace
例如impl::
or detail::
,这将向用户传达他们不应该在内部使用任何类,并阻止任何可能对重载等产生的不良影响。这就是大多数库(甚至标准库实现)向用户“隐藏”类的方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)