静态成员函数错误; 如何正确书写签名?

当我尝试使用当前签名在g ++中编译我的代码时出现错误:

cannot declare member function static void Foo::Bar(std::ostream&, const Foo::Node*) to have static linkage 

我的问题是双重的:

  1. 为什么不这样编译?
  2. 什么是正确的签名,为什么?

使用C ++时签名一直是我的死亡

编辑:这是类头文件,以及:

 class Foo { public: Foo(); ~Foo(); bool insert(const Foo2 &v); Foo * find(const Foo2 &v); const Foo * find(const Foo2 &v) const; void output(ostream &s) const; private: //Foo(const Foo &v); //Foo& operator =(const Foo &v); //Not implemented; unneeded struct Node { Foo2 info; Node *left; Node *right; }; Node * root; static bool insert(const Foo2 &v, Node *&p); static void output(ostream &s, const Node *p); static void deleteAll(Node *p); 

我猜你已经做了这样的事情:

 class Foo { static void Bar(); }; ... static void Foo::Bar() { ... } 

static void Foo::Bar ”是不正确的。 你不需要第二个“ static ”。