title: c++ template error - RBTree
body: <p>I am new to c++ templates and I have not managed to fix this error. 
  In my main method I am creating an instance tree for the Rbt calling the templates item and key as int. The error I am being told is </p>
  
  <blockquote>
    <p>no matching for call to 'RBt :: RBt()'</p>
  </blockquote>
  
  <p>and the warning message I am getting is:</p>
  
  <blockquote>
    <p>RBt ::RBt(Item, Key)[with Item = int; Key= int]</p>
  </blockquote>
  
  <p>the code in my main method: </p>
  
  <pre><code>#include "Nod.h"
  #include "RBt.h"
  #include &lt;stdlib.h&gt;
  
  int main() {
      Nod &lt;int, int&gt; x = Nod&lt;int, int&gt; (0, 3); // Nod.h
  
      RBt&lt;int, int&gt; tree;
      tree.Insert(tree, &amp;x);
  
      return 0;
  }
  </code></pre>
  
  <p>RBt.h: </p>
  
  <pre><code>    #include &lt;stdlib.h&gt;
      #include &lt;stdio.h&gt;
      using namespace std;
  
      template &lt;class Item, class Key&gt; class RBt
      {
      private:
  
          Nod&lt;Item, Key&gt; *root;
  
      public:
          Nod&lt;Item, Key&gt; NIL;
  
          RBt(Item item, Key key){
              root = 0;
          }
          void Insert(RBt&lt;Item, Key&gt; T, Nod&lt;Item,Key&gt; *z);
      };
  
  template&lt;class Item, class Key&gt; void RBt&lt;Item, Key&gt; ::Insert(RBt&lt;Item, Key&gt; T, Nod&lt;Item,Key&gt; *z)
          {
              Nod&lt;Item, Key&gt; *newNode = NULL;
  
  
              if(root-&gt;getValue() == z-&gt;getValue()){
                  //skip doubles
              }
              else if(root-&gt;getValue() &gt; z-&gt;getValue()){
                  if(root-&gt;getLeft() == NULL){
  
                      newNode = z;
                      root-&gt;setLeft(newNode);
                  }
                  else{
                      this-&gt;Insert(T,z-&gt;getLeft());
                  }
              }
              else
              {
                  if(root-&gt;getRight() ==NULL){
  
                      newNode =z;
                      root-&gt;setRight(newNode);
                  }
                  else{
                      //this-&gt;Insert(root-&gt;getRight(),z);
                  }
              }
  
              z-&gt;setLeft(newNode);
              z-&gt;setRight(newNode);
              z-&gt;color = "RED";
              //z-&gt; setColor("RED");
              InsertFixUp(T,z);
  
          }
  </code></pre>
  
  <p>Nod.h: </p>
  
  <pre><code>    template &lt;class Item, class Key&gt; class Nod {
      public:
          Nod *left;
          Nod *right;
          Nod *parent;
  
          int value;
          string color;
          Key key;
          Item item;
  
          Nod(Item item, Key key){
              this-&gt;key = key;
              this-&gt;item = item;
  
          }
  
  void setLeft(Nod&lt;Item, Key&gt; *left){
          this-&gt; left = left;
  
      }
  
      Nod&lt;Item, Key&gt; *getLeft(){return this-&gt;left;}
  
      void setRight(Nod&lt;Item, Key&gt; *right){
          this-&gt; right = right;
  
      }
      Nod&lt;Item, Key&gt; *getRight(){return this-&gt;right;}
          void setValue(int value){
          this-&gt;value = value;
      }
  
      int getValue(){ return this-&gt;value;}
  
      void setColor(string color){
          this-&gt;color = color;
      }
  
      string getColor(){return this-&gt;color;}
  };
  </code></pre>
  
  <p>Thanks in advance. </p>