我在我创建的命名空间中有一些函数,这些函数在我的整个程序中都在使用。
在头文件中:
namespace NQueens
{
static int heur = 0;
int CalcHeuristic(char** state, int size);
void CalcHorzH(char ** state, int &heuristic, int size);
void CalcColH(char ** state, int &heuristic, int size);
void CalcDiagH(char ** state, int &heuristic, int size);
int calcCollisions(int queensPerRow, int size);
}
一切正常。但是,从我的外部程序代码实际调用的唯一函数是 CalcHeuristic(char** state, int size)
函数。
这个函数然后调用其他函数本身。
因为这些不属于一个类,所以我的编译器不会让我将其他函数声明为 private
。有没有办法做到这一点?我应该为此担心吗?
最佳答案
不要在 header 中声明它们,将它们放在实现文件中的匿名命名空间中。
标题示例:
namespace NQueens
{
int CalcHeuristic(char** state, int size);
}
示例实现:
namespace
{
static int heur = 0;
void CalcHorzH(char ** state, int &heuristic, int size);
void CalcColH(char ** state, int &heuristic, int size);
void CalcDiagH(char ** state, int &heuristic, int size);
int calcCollisions(int queensPerRow, int size);
}
namespace NQueens
{
int CalcHeuristic(char** state, int size)
{
// ...
}
}
namespace
{
void CalcHorzH(char ** state, int &heuristic, int size) {}
void CalcColH(char ** state, int &heuristic, int size) {}
void CalcDiagH(char ** state, int &heuristic, int size) {}
int calcCollisions(int queensPerRow, int size) { return 0; }
}
关于c++ - 非类函数可以私有(private)化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32953165/