gpt4 book ai didi

c++ - 如何隐藏 C++ 中的类?

转载 作者:可可西里 更新时间:2023-11-01 16:28:13 25 4
gpt4 key购买 nike

假设我有 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

真正的解决方案(虽然在技术上不能满足问题)

更好的解决方案是使用明确命名的命名空间,例如impl::detail::,这将传达给用户他们不应该在里面使用任何类,并停止任何可能对重载或类似的不良影响。这就是大多数库(甚至是标准库实现)向用户“隐藏”类的方式。

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

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