我可以从可能的SDK中的标头中删除私有声明吗?

时间:2015-02-13 15:42:15

标签: c++ dll architecture sdk

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

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

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

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

P.S。如果您有关于SDK应该如何的信息,请留下链接。

1 个答案:

答案 0 :(得分:1)

friend更糟糕,使用它或继承,或者更好地将这些方法分解为您的代码只能访问的单独编译单元。