【发布时间】:2014-12-28 04:36:14
【问题描述】:
我有一个处理日志的 C++ 类 (ClassLog),我在自己的类 (ClassWork) 中实现了这个类的一个实例。因为我的 ClassWork 日志中需要时间戳,所以我添加了一个包装函数,在将要写入 ClassLog 的字符发送之前,将当前时间添加到每个新行。
这意味着在 ClassWork 中添加新日志输出的任何人都必须使用我的包装函数,否则日志将被弄乱(缺少时间戳)。但是,ClassLog 有一个公共成员函数,它允许任何人绕过我的包装函数,直接写入日志。我可以做些什么来在 ClassWork 中有一个 ClassLog 的实例,但阻止 ClassWork 访问 ClassLog 公共成员函数,除非它们是从我的包装函数访问的?这将使其他编码员不可能意外地搞砸日志。
【问题讨论】:
-
允许您绕过包装器的功能真的必须公开吗?
-
不幸的是,我对 ClassLog 没有权限,因为它是一个很久以前开发的类,并且在我的团队使用的代码中随处使用。因此,任何人都可以使用我的 ClassWork 中声明的 ClassLog 实例进行编写。 ClassLog 本身的实例是私有的,但我担心人们直接使用 ClassLog 打印而不是我的包装器将代码添加到 ClassWork。