【发布时间】:2023-03-17 06:14:03
【问题描述】:
以下设置/设计模式在 C++ 中是否可行?
- Leader 类
- 工人阶级
- 有方法 M()
- 一个 MyWorker 类(继承 Worker)
Leader类有很多Worker,需要调用Worker类的M()方法。但是,我不希望 Worker 的任何实现(即 MyWorker)能够访问方法 M()。在这种情况下,public、private 和 protected 似乎都不起作用。
这种设置可行吗?或者我应该如何设计?
谢谢
编辑:(添加示例)
假设 M() 是 GiveMoney(),Leader = Parent,Worker = Child。我只希望父母能够给孩子钱(孩子不能给自己钱)。
【问题讨论】:
-
您希望一个类不能访问它自己的方法,但希望该方法可以从另一个类调用?我认为这在任何语言中都是不可能的。
-
邮政编码,如果将 M() 定义为私有;并且通过 public 进行扩展应该会导致 MyWorker 无法访问私有方法。只要 Worker(M() 的原始所有者)是唯一调用 M() 的东西,M() 是私有的这一事实应该可以正常工作,因为通常一个实例可以对其他实例上的私有方法/成员进行操作同班。
-
如果
M()被定义为 private 并且Leader是Worker的朋友,那么一切都应该如你所愿 - 如果我理解正确的话。跨度>
标签: c++ design-patterns inheritance