title: undefined reference to `BST<char>::BST()'
body: <p>i get these error</p>
  
  <p>C:\Users\SDRav\AppData\Local\Temp\ccCy0RiX.o:driver.cpp:(.text+0x1b): undefined reference to <code>BST&lt;char&gt;::BST()'
  C:\Users\SDRav\AppData\Local\Temp\ccCy0RiX.o:driver.cpp:(.text+0x1eb): undefined reference to</code>BST::insert(char const&amp;)'
  C:\Users\SDRav\AppData\Local\Temp\ccCy0RiX.o:driver.cpp:(.text+0x228): undefined reference to <code>BST&lt;char&gt;::traversePreorder(BSTNode&lt;char&gt;*)'
  C:\Users\SDRav\AppData\Local\Temp\ccCy0RiX.o:driver.cpp:(.text+0x263): undefined reference to</code>BST::search(char const&amp;) const'
  C:\Users\SDRav\AppData\Local\Temp\ccCy0RiX.o:driver.cpp:(.text+0x32b): undefined reference to <code>BST&lt;char&gt;::deleteNode(char const&amp;)'
  C:\Users\SDRav\AppData\Local\Temp\ccCy0RiX.o:driver.cpp:(.text+0x419): undefined reference to</code>BST::leafCount(BSTNode*)'
  C:\Users\SDRav\AppData\Local\Temp\ccCy0RiX.o:driver.cpp:(.text+0x47c): undefined reference to <code>BST&lt;char&gt;::search(char const&amp;) const'
  C:\Users\SDRav\AppData\Local\Temp\ccCy0RiX.o:driver.cpp:(.text+0x4d5): undefined reference to</code>BST::getSiblings(char const&amp;)'
  collect2.exe: error: ld returned 1 exit status</p>
  
  <p>but i have no idea why.... my guess is linking but i have check the headers and i still cant see it </p>
  
  <p>my driver.cpp(main)</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  #include &lt;iomanip&gt;
  #include "BST.h"
  using namespace std;
  
  int main()
  {
  
      BST&lt;char&gt; op1;
      int action = 0;
      int numInsert = 0;
      char value;
  
  cout&lt;&lt;"-------------------- MENU ----------------------"
          &lt;&lt;endl&lt;&lt;"1. Insert node(s)"
          &lt;&lt;endl&lt;&lt;"2. Traverse Preorder"
          &lt;&lt;endl&lt;&lt;"3. Search BST"
          &lt;&lt;endl&lt;&lt;"4. Delete node"
          &lt;&lt;endl&lt;&lt;"5. Leaf Count"
          &lt;&lt;endl&lt;&lt;"6. Sibling of a node"
          &lt;&lt;endl&lt;&lt;"7. Quit"
          &lt;&lt;endl&lt;&lt;"Please ent
  
   switch (action)
          {
              case 1:
                  cout &lt;&lt; "\n How many values would you liek to insert to a BST? ";
                  cin&gt;&gt;numInsert;
                  for(int i =0; i&lt;numInsert;i++){
                      cout&lt;&lt;"What value would you like to insert to the list: ";
                      cin &gt;&gt; value;
                      op1.insert(value); //check
                  }    
                  break;
     ...
  
  }
  </code></pre>
  
  <p>--- BST.h ---</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include "BSTNode.h"
  
  using namespace std;
  
  #ifndef BINARY
  #define BINARY
  
  template &lt;typename DataType&gt;
  
  class BST
  {
      public:
          BST();
          // ~BST();
  
          bool empty() const;
          /*------------------------------------------------------------------------
              Check if BST is empty.
  
              Precondition:  None.
              Postcondition: Returns true if BST is empty and false otherwise.
          -----------------------------------------------------------------------*/
          void insert(const DataType &amp; item);
          void traversePreorder(BSTNode&lt;DataType&gt; * startPoint);
          bool search(const DataType &amp; item)const;
          bool deleteNode(const DataType &amp; item);
          int leafCount(BSTNode&lt;DataType&gt; * startPoint);
          DataType getSiblings(const DataType &amp; item);
  
  
  
  
      private:
          BSTNode&lt;DataType&gt; * treeRoot;
          typedef BSTNode&lt;DataType&gt; * BSTNodePointer; 
          void search2(const DataType &amp; item, bool &amp; found,  BSTNodePointer &amp; locptr, BSTNodePointer &amp; parent) const;
  
  
  };
  </code></pre>
  
  <p>please help</p>