【发布时间】:2015-04-14 17:02:22
【问题描述】:
我正在编写一个小游戏引擎,我需要为另一个类提供对一个类的方法的访问权限,并且这些方法不能从客户端代码中看到或访问。我认为这是一个普遍的问题。
我们可以使用 C++ 中的“friend”关键字来解决这个问题,但这是一个不好的解决方案,另外很多其他语言不提供这个关键字,比如 C#(但是 C# 有另一种方法可以隐藏方法外部代码)。 我们可以使用一些模式和相对限制访问次数。
但如果我编写库,我可以简单地从头文件中删除这些方法的声明。这些方法不必从 lib 中导出,它们只会在内部以观察者模式使用,因此它可能不太可能在运行时崩溃引擎。
最后,问题是, 准备特殊版本的标头(带有已删除的私有声明)将打包在 SDK 中是一种好方法吗,或者在我的情况下,唯一的方法是朋友关键字用法?
附:如果您有一些关于 SDK 应该如何的信息,请留下一个链接。
【问题讨论】:
标签: c++ dll architecture sdk