静态成员在姓氏中功能

Static member functions in namesapce

本文关键字:功能 静态成员      更新时间:2023-10-16

我在我的班级内有静态成员函数,我想在我的名称空间中添加。

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(); void a :: func(){

原因是什么?

,因为您将属于a a a a内命名空间的函数放置。只需在命名空间内将类和函数合在一起,您的代码应该像这样

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

    void A::func() {
    }
}
int main()
{
    myNamespace::A::func;
    return 0;
}

声明和定义都应在名称空间内部,以使其工作。在您的代码中,您已在命名空间之外声明了课程。您可以按照以下方式进行修复。

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

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

还尝试了解错误消息,这可以节省您很多时间谷歌搜索。

https://www.crashhandler.com/--> C 中的最佳实践{edit ::我自己的博客}