代码之家  ›  专栏  ›  技术社区  ›  rubenvb

命名空间与函数同名

  •  2
  • rubenvb  · 技术社区  · 15 年前

    double commonFunction( ... )
    { /*...*/ }
    namespace F2
    {
        double impactFactor( ... )
        { /*...*/ }
        double func( ... )
        { /*...*/ }
        double F2( ... )
        { /*...*/ }
    }
    namespace FL
    {
        double impactFactor( ... )
        { /*...*/ }
        double func( ... )
        { /*...*/ }
        double FL( ... )
        { /*...*/ }
    }
    

    我想从全局名称空间访问F2和FL函数。我尝试将其添加到标题的末尾(或者在include之后,无所谓):

    using F2::F2;
    using FL::FL;
    

    我确信,当函数名与命名空间名不同时,这是可行的,但为什么这不起作用,我如何修复它?谢谢

    :对于那些诅咒我的人,我是这么做的。因为这是一个科学的公式头,很难找到一个好的短名称空间名,所以我将名称空间命名为F2和FL,并将函数本身命名为F2和FL。

    2 回复  |  直到 15 年前
        1
  •  6
  •   Ramadheer Singh    15 年前

    因为, using 将具有给定名称的每个声明放入范围,因此如果已经有两个或多个具有一个名称的声明(在本例中 namespace f1 ),它会抱怨。

    以及 它与名称空间和函数的名称相同无关。

    namespace foo
    {
        void not_foo(){};
    }
    namespace not_foo
    {
        void foo(){}
    }
    using not_foo::foo;
    
        2
  •  1
  •   MSalters    15 年前

    您的问题是“如何从全局命名空间访问F2和FL函数”。

    我想知道你遇到了什么错误。还有,实际的论点是什么?没有这些,我只能猜测。我建议换个房间 using 声明 using ::FL::FL . 尽管如此,查找的名称 FL namespace FL ,你不能隐瞒。