有没有办法在 cpp 文件中向用户隐藏 C++ 类的私有数据成员?我认为私有成员是实现的一部分,在头文件中声明它们似乎有点倒退。
da_code_monkey
问问题
30527 次
5 回答
64
“pimpl”成语是通常如何处理的。
看
于 2008-10-15T20:23:48.247 回答
11
你想使用像 PIMPL 成语这样的东西
于 2008-10-15T20:28:06.847 回答
8
于 2008-10-15T20:24:10.850 回答
4
执行此操作的经典方法是使用指向实现该功能的内部类的代理指针。据我所知,没有办法在 C++ 中进行部分类定义。
于 2008-10-15T20:23:57.463 回答
1
去商业化?;)
您可以创建头文件,在其中您只声明公共和受保护的 API。
用户只看到这些,他们可以包括在内。他们将代码与您使用完整 API 和定义构建的库链接。
对于内联函数:确保它们在非内联代码中使用,然后库中会有一个可用的定义(但是我不确定它是否会在用户实现中内联)。
对于模板化代码,没有真正的解决方法。一种半心半意的解决方案是编写代码,它使用具有不同对象类型的模板化代码。用户将仅限于这些,因为它们是您的库中唯一可用的定义。
于 2010-01-25T17:57:34.090 回答