C++ 在类之间共享私有数据和方法

C++ 在类之间共享私有数据和方法,c++,class,C++,Class,我有一个特定功能的一系列类。用户代码只能实例化其中一个类,因为其他类是“helper”类。但是,这些帮助器类确实公开了用户代码可以使用的有用信息 因此,我可以使用helper类的构造函数,使其只能从主类访问 同样,让方法和数据只能从适当的类访问,而不是从“用户代码”访问,也是很有用的 到目前为止我想到的解决方案: 将一个功能的所有类放在一个文件中,并使用“静态”创建仅该文件本地的变量。这是可行的,因为只有一个主类实例和所有“helper”类,但这似乎不是一个“好”的解决方案 让“助手类”朋友成为

我有一个特定功能的一系列类。用户代码只能实例化其中一个类,因为其他类是“helper”类。但是,这些帮助器类确实公开了用户代码可以使用的有用信息

因此,我可以使用helper类的构造函数,使其只能从主类访问

同样,让方法和数据只能从适当的类访问,而不是从“用户代码”访问,也是很有用的

到目前为止我想到的解决方案:

将一个功能的所有类放在一个文件中,并使用“静态”创建仅该文件本地的变量。这是可行的,因为只有一个主类实例和所有“helper”类,但这似乎不是一个“好”的解决方案

让“助手类”朋友成为主类。这也会起作用,但也会让主类访问helper类中的所有私有数据,这并不理想


从虚拟基类继承:认为这可能是最好的解决方案。通过“受保护”共享数据,私有数据保持私有,公共数据公开。还没有在这个理论上留下任何漏洞。需要考虑性能方面,因为这是一个嵌入式系统,时钟速度为72MHz。p> 使用构图

继承的类应该只继承功能,而不继承状态。受保护的成员/功能可能将状态逻辑分为两个单元。我要说的是使用组合,并通过公共函数访问功能


遗憾的是,你的类永远不会对你不认识的用户有好处,所以我要说不要限制自己。

我不是专家,但我认为考虑嵌入式系统中的虚拟功能,想要性能,这不是一个好主意。因此基本上让助手类位于主类的私有部分,然后让主类代表用户通过公共方法访问它们?是的,这实际上是“正确”的设计。通过这种方式,您仍然可以进行封装,您不需要限制自己,也不需要冗余耦合。