名称空间中的静态成员函数

时间:2019-02-26 06:28:28

标签: c++ namespaces static-functions

我的类中有静态成员函数,我想在我的命名空间中添加它。

class A{
public:
    static void func();
};

namespace myNamespace{
    void A::func(){
    ...
    }
}

int main(){
   myNamespace::A::func;
}

我收到以下错误:

  • 错误:“ void A :: func()”的定义不在包含“ A” [-fpermissive]
  • 的命名空间中
  • 错误:“ myNamespace :: A”尚未声明 myNamespace :: A :: func();  无效A :: func(){

原因是什么?

2 个答案:

答案 0 :(得分:1)

因为您将一个属于A类的函数放入了命名空间。只需将类和函数A一起放在命名空间中,您的代码应该像这样

namespace myNamespace {
class A {
public:
    static void func();
};


    void A::func() {

    }
}
int main()
{

    myNamespace::A::func;

    return 0;
}

答案 1 :(得分:1)

声明和定义都应位于NameSpace中,这样它才能起作用。在代码中,您已经在名称空间之外声明了该类。您可以按以下方式修复它。

namespace myNamespace{

    class A{
    public:
        static void func();
    };


    void A::func(){
    ...
    }
}

int main(){
   myNamespace::A::func;
}

还尝试理解错误消息,这将为您节省大量搜索时间。

https://www.crashhandler.com/ ---> C ++最佳实践{EDIT ::我自己写博客}