我有一个具有 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/