有没有办法在cpp文件中隐藏C ++类的私有数据成员远离其用户?我认为私有成员是实现的一部分,在头文件中声明它们似乎有些倒退。
答案 0 :(得分:57)
“pimpl”成语是通常如何处理的。
见
答案 1 :(得分:8)
请参阅Pimpl Idiom
答案 2 :(得分:8)
你想使用像PIMPL习语
这样的东西答案 3 :(得分:4)
执行此操作的经典方法是使用指向实现该功能的内部类的代理指针。我不知道在C ++中做部分类定义。
答案 4 :(得分:1)
去商业广告? ;)
您可以创建头文件,您只需在其中声明公共API和受保护的API。
用户只能看到这些内容,他们可以包含这些内容。他们将代码与您使用完整API和定义构建的库链接。
对于内联函数:确保它们用在非内联代码中,然后库中会有一个定义(我不确定它是否会在用户实现中内联)。
对于模板化代码,没有真正的方法。一个半心半意的解决方案是创建代码,该代码使用具有不同对象类型的模板化代码。用户将受限于这些,因为它们是您库中唯一可用的定义。