c++ - 在 C++ 中将静态类转为命名空间时如何处理私有(private)成员函数?

标签 c++ static namespaces private

我有一个具有 5 个静态公共(public)函数和 1 个静态私有(private)函数(从其中一个公共(public)函数调用)的类。该类没有任何成员变量。在我看来,它应该是一个命名空间而不是一个类。但是如何处理私有(private)函数呢?我不希望每个命名空间用户都可以访问它,但命名空间中没有访问控制。

最佳答案

我知道有两种方法

不要在标题中声明它们

一种方法是不在 header 中声明这些函数。它们只能放在实现文件中的未命名 namespace 中。

事实上,您随后必须在实现文件中实现访问此私有(private)函数的任何函数(而不是在 header 中内联)。

将它们放入一个 detail 命名空间

您最好将它们放在不同的标题中,并包含它们。所以他们的代码不会打扰你的接口(interface)标题。 boost 也是这样做的:

#include "detail/destroy.hpp"

namespace orbit {
  void destroy() {
    detail::destroy_planets();
    detail::destroy_stars();
  }
}

关于c++ - 在 C++ 中将静态类转为命名空间时如何处理私有(private)成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2080912/

相关文章:

namespaces - 使用什么命名空间来识别 JSF 2.x 中的导航标签?

c++ - 如何在 Eclipse 4.7.3a 中抑制 "Syntax error"

c++ - 为什么 QLabel 会过早换行?

c - 为什么静态全局变量可以在其他文件中访问?

c++ - 是否允许并接受用删除标记静态方法?

c++ - "std::transform"在多个编译器上没有限定名称查找的情况下编译?

typescript - 如何在 TypeScript 中为 Twilio 全局 JS 库创建环境声明?

c++ - 初始化指向 QListWidgetItem Qt 5.8 的指针

尝试使用 Code::Blocks 编译第二个模块时出现 C++ 链接器错误

c++ - Makefile:将库添加到另一个项目