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

Can I delete private declarations from headers in possible SDK?

本文关键字:声明 删除 SDK 我可以      更新时间:2023-10-16

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

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

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

最后,问题是,准备将封装在SDK中的特殊版本的头(带有已删除的私有声明)是一种好方法,还是在我的情况下唯一的方法是使用friend关键字?

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

这比friend差得多,使用它或继承,或者更好地将这些方法分解到一个单独的编译单元中,您的代码只能访问该编译单元。