隐藏私人数据成员? (C ++)

时间:2008-10-15 20:22:05

标签: c++ class private

有没有办法在cpp文件中隐藏C ++类的私有数据成员远离其用户?我认为私有成员是实现的一部分,在头文件中声明它们似乎有些倒退。

5 个答案:

答案 0 :(得分:57)

“pimpl”成语是通常如何处理的。

答案 1 :(得分:8)

请参阅Pimpl Idiom

答案 2 :(得分:8)

你想使用像PIMPL习语

这样的东西

http://en.wikipedia.org/wiki/Opaque_pointer

答案 3 :(得分:4)

执行此操作的经典方法是使用指向实现该功能的内部类的代理指针。我不知道在C ++中做部分类定义。

答案 4 :(得分:1)

去商业广告? ;)

您可以创建头文件,您只需在其中声明公共API和受保护的API。

用户只能看到这些内容,他们可以包含这些内容。他们将代码与您使用完整API和定义构建的库链接。

对于内联函数:确保它们用在非内联代码中,然后库中会有一个定义(我不确定它是否会在用户实现中内联)。

对于模板化代码,没有真正的方法。一个半心半意的解决方案是创建代码,该代码使用具有不同对象类型的模板化代码。用户将受限于这些,因为它们是您库中唯一可用的定义。