【问题标题】:Can I delete private declarations from headers in possible SDK?我可以从可能的 SDK 中的标头中删除私有声明吗?
【发布时间】:2015-04-14 17:02:22
【问题描述】:

我正在编写一个小游戏引擎,我需要为另一个类提供对一个类的方法的访问权限,并且这些方法不能从客户端代码中看到或访问。我认为这是一个普遍的问题。

我们可以使用 C++ 中的“friend”关键字来解决这个问题,但这是一个不好的解决方案,另外很多其他语言不提供这个关键字,比如 C#(但是 C# 有另一种方法可以隐藏方法外部代码)。 我们可以使用一些模式和相对限制访问次数。

但如果我编写库,我可以简单地从头文件中删除这些方法的声明。这些方法不必从 lib 中导出,它们只会在内部以观察者模式使用,因此它可能不太可能在运行时崩溃引擎。

最后,问题是, 准备特殊版本的标头(带有已删除的私有声明)将打包在 SDK 中是一种好方法吗,或者在我的情况下,唯一的方法是朋友关键字用法?

附:如果您有一些关于 SDK 应该如何的信息,请留下一个链接。

【问题讨论】:

    标签: c++ dll architecture sdk


    【解决方案1】:

    这比friend很多,使用它或继承或更好地把这些方法分解成一个单独的编译单元,你的代码只能访问。

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 2014-10-24
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      相关资源
      最近更新 更多