【发布时间】:2010-09-17 09:39:55
【问题描述】:
有没有办法在 cpp 文件中向用户隐藏 C++ 类的私有数据成员?我认为私有成员是实现的一部分,在头文件中声明它们似乎有点倒退。
【问题讨论】:
有没有办法在 cpp 文件中向用户隐藏 C++ 类的私有数据成员?我认为私有成员是实现的一部分,在头文件中声明它们似乎有点倒退。
【问题讨论】:
“pimpl”成语是通常的处理方式。
见
【讨论】:
你想使用类似 PIMPL 成语的东西
【讨论】:
【讨论】:
执行此操作的经典方法是使用指向实现该功能的内部类的代理指针。据我所知,没有办法在 C++ 中进行部分类定义。
【讨论】:
去商业化? ;)
您可以创建头文件,在其中只声明公共和受保护的 API。
用户只看到这些,他们可以包括在内。他们将代码与您使用完整 API 和定义构建的库链接。
对于内联函数:确保它们在非内联代码中使用,然后库中会有一个可用的定义(但是我不确定它是否会在用户实现中内联)。
对于模板化代码,没有真正的解决办法。一种半心半意的解决方案是编写代码,它使用具有不同对象类型的模板化代码。用户将仅限于这些,因为它们是您的库中唯一可用的定义。
【讨论】: