我有一个执行计算的函数,我希望能够在我的程序中的任何地方调用此函数。我知道在Java中,我只想在类中创建一个public static
方法。
到目前为止,在C ++中,我为我的特定函数创建了一个namespace
。我遇到的问题是这个函数使用自己的辅助函数。我希望这些较低级别的功能不可见(即私有),但我不知道该怎么做。
到目前为止,我有这段代码:
namespace HelperCalc{
int factorial(int n){
return n <= 1 ? 1 : n*factorial(n-1);
}
double getProbability(int x, int y){
.....//do maths
.... = factorial(x);
}
}
例如,我可以致电getProbability()
,但我想'隐藏'factorial()
。
答案 0 :(得分:4)
使用匿名命名空间(在源文件中,而不是标题中):
namespace {
int factorial(int n){
return n <= 1 ? 1 : n*factorial(n-1);
}
}
namespace HelperCalc{
double getProbability(int x, int y){
.....//do maths
.... = factorial(x);
}
}
答案 1 :(得分:2)
分隔您想要公开的功能的声明和定义。 在实现文件中定义公共函数和辅助函数。
namespace.h
:
namespace X
{
void public_function();
}
namespace.cpp
:
// An anonymous namespace means functions defined within it
// are only available to other functions in the same source file.
namespace {
void helper_function()
{
// ...
}
}
namespace X
{
void public_function()
{
helper_function();
}
}