c++ - 如何将访问非全局类的全局函数放在一个地方?

标签 c++ class namespaces global

我什至可能没有正确提出问题,但这是我的情况。我有一个 namespace ,我想将所有全局函数放入其中。我想在相应的 .cpp 文件中定义它们。其中许多函数访问非全局类的实例,这些类本身可能是也可能不是命名空间的成员。我可以前向声明类,但是当我尝试调用类方法时,我当然仍然会遇到链接器错误。一个(看起来很糟糕的)解决方案是在定义了相应的类之后 定义这些全局变量中的每一个,但这会将不同的函数放在不同的文件中,我想不惜一切代价避免这种情况,这样做似乎大错特错。

我还能做什么?我想我在这里遇到了一个概念性问题,什么样的设计策略可能有助于解决这个问题?我必须让它们成为相应类的静态成员吗​​?我不喜欢这个 b/c 我的类有长名称,但我的命名空间名称很短......所以只使用 typedef?但从概念上讲,这些是全局函数,所以我想保持这种状态……感谢您的考虑。

最佳答案

我会在它们自己的头文件中自行定义“全局函数”。如果您需要添加前向声明,请在此处添加。

在 .cpp 文件中,只需根据需要包含其他“非全局”类和函数的 header 。这将使公共(public) API(头文件)保持“干净”,同时让您在这些功能的实际代码中正常开发。

关于c++ - 如何将访问非全局类的全局函数放在一个地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935753/

相关文章:

c++ - g++ 选项显示哪些类是从模板创建的

xml - Powershell XML 属性命名空间

c++ - 在函数中使用非静态值作为默认参数

c++ - 将 pugixml 节点设置为空?

python - 如何在另一个类中使用一个类的方法结果

swift - NSTimer 无法在非 GameScene 的类中工作

c++ - 为什么类中的 vector 自动变为 NULL

python - Django 可重用应用程序 url 命名空间问题

c# - 使用 Microsoft.PowerShell.Commands 找不到命名空间 'CopyItemCommand'

c++ - 检查反转数组是否与原始数组相同