title: Static member functions error; How to properly write the signature?
body: <p>I am getting an error when trying to compile my code in g++ using the current signature:</p>
  
  <pre><code>cannot declare member function static void Foo::Bar(std::ostream&amp;, const Foo::Node*) to have static linkage
  </code></pre>
  
  <p>My question is twofold:</p>
  
  <ol>
  <li>Why does it not Compile this way?</li>
  <li>What is the correct signature, and why?</li>
  </ol>
  
  <p>Signatures have always been the death of me when using C++</p>
  
  <p>Edit: Here is the class header file, as well:</p>
  
  <pre><code>class Foo {
  
  
  public:
      Foo();
  
      ~Foo();
  
      bool insert(const Foo2 &amp;v);
  
      Foo * find(const Foo2 &amp;v);
  
      const Foo * find(const Foo2 &amp;v) const;
  
      void output(ostream &amp;s) const;
  
  private:
      //Foo(const Foo &amp;v);
      //Foo&amp; operator =(const Foo &amp;v);
      //Not implemented; unneeded
  
  
      struct Node {
          Foo2 info;
          Node *left;
          Node *right;
      };
  
      Node * root;
  
      static bool insert(const Foo2 &amp;v, Node *&amp;p);
  
  
      static void output(ostream &amp;s, const Node *p);
  
  
      static void deleteAll(Node *p);
  </code></pre>