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

在使用当前签名在 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);
91435 次浏览

我猜你做过这样的事:

class Foo
{
static void Bar();
};


...


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

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