C ++中的Helper方法及其可见性

时间:2012-01-06 21:52:38

标签: c++

我有一个执行计算的函数,我希望能够在我的程序中的任何地方调用此函数。我知道在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()

2 个答案:

答案 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();
    }
}