title: Undefined Reference to
body: <p>When I compile my code for a linked list, I get a bunch of undefined reference errors.  The code is below.  I have been compiling with both of these statements:</p>
  
  <pre><code>g++ test.cpp 
  </code></pre>
  
  <p>as well as </p>
  
  <pre><code>g++ LinearNode.h LinearNode.cpp LinkedList.h LinkedList.cpp test.cpp  
  </code></pre>
  
  <p>I really do not understand why I am getting these errors because I am really rusty on classes in C++.  I could really use some help.</p>
  
  <p>LinearNode.h:</p>
  
  <pre><code>#ifndef LINEARNODE_H
  #define LINEARNODE_H
  #include&lt;iostream&gt;
  
  using namespace std;
  
  class LinearNode
  {
      public:
          //Constructor for the LinearNode class that takes no arguments 
          LinearNode();
          //Constructor for the LinearNode class that takes the element as an argument
          LinearNode(int el);
          //returns the next node in the set.
          LinearNode* getNext();
          //returns the previous node in the set
          LinearNode* getPrevious();
          //sets the next element in the set
          void setNext(LinearNode* node);
          //sets the previous element in the set
          void setPrevious(LinearNode* node);
          //sets the element of the node
          void setElement(int el);
          //gets the element of the node
          int getElement();
  
      private: 
          LinearNode* next;
          LinearNode* previous;
          int element;        
  };//ends the LinearNode class
  
  #endif
  </code></pre>
  
  <p>LinearNode.cpp:</p>
  
  <pre><code>#ifndef LINEARNODE_cpp
  #define LINEARNODE_cpp
  #include&lt;iostream&gt;
  #include"LinearNode.h"
  
  using namespace std;
  
  //Constructor for LinearNode, sets next and element to initialized states
  LinearNode::LinearNode()
  {
      next = NULL;
      element = 0;
  }//ends LinearNode default constructor
  
  //Constructor for LinearNode takes an element as argument.
  LinearNode::LinearNode(int el)
  {
      next = NULL;
      previous = NULL;
      element = 0;
  }//ends LinearNode constructor
  
  //returns the next element in the structure
  LinearNode* LinearNode::getNext()
  {
      return next;
  }//ends getNext function
  
  //returns previous element in structure
  LinearNode* LinearNode::getPrevious()
  {
      return previous;
  }//ends getPrevious function
  
  //sets the next variable for the node
  void LinearNode::setNext(LinearNode* node)
  {
      next = node;
  }//ends the setNext function
  
  //sets previous for the node
  void LinearNode::setPrevious(LinearNode* node)
  {
      previous = node;
  }//ends the setPrevious function
  
  //returns element of the node
  int LinearNode::getElement()
  {
      return element;
  }//ends the getelement function
  
  //sets the element of the node
  void LinearNode::setElement(int el)
  {
      element = el;
  }//ends the setElement function
  
  #endif
  </code></pre>
  
  <p>LinkedList.h:</p>
  
  <pre><code>#ifndef LINKEDLIST_H
  #define LINKEDLIST_H
  #include&lt;iostream&gt;
  #include"LinearNode.h"
  
  using namespace std;
  
  class LinkedList
  {
      public:
          LinkedList();
          void add(int element);
          int removie (int element);
  
      private:
          int count;
          LinearNode *contents;
  };//ends the class linked list
  
  #endif
  </code></pre>
  
  <p>LinkedList.cpp:</p>
  
  <pre><code>#ifndef LINKEDLIST_CPP
  #define LINKEDLIST_CPP
  
  #include&lt;iostream&gt;
  #include"LinearNode.h"
  #include"LinkedList.h"
  
  using namespace std;
  
  //linkedlist constructor for an empty linked list
  LinkedList::LinkedList()
  {
      count = 0;
      contents = NULL;
  }//ends the constructor
  
  //adds an element to the front of the linked list
  void LinkedList::add(int element)
  {
      int found = 0, current = 0;
  
      while( (found == 0) &amp;&amp; (current !=count) )
      {
          if (contents.getElement() == element)
              found = 1;
          else    
          {
              contents = contents.getNext();
              current++;
          }//ends the else statement
      }//ends the while loop
  
      if (found == 0)
      {
          LinearNode node = new LinearNode(element);
          node.setNext(contents);
          contents.setPrevious(node);
          count++;
      }//ends the found == 0 if statment
  }//ends the add function
  
  //this function removes one element from the linked list.
  int LinearNode::remove(int element)
  {
      int found = 0;
  
      if (count == 0)
          cout &lt;&lt; "The list is empty" &lt;&lt; endl;
      else 
      {
          if (contents.getElement() == element)
          {
              result = contents.getElement();
              contents = contents.getNext();
          }//ends the contents.getElement() == element
          else 
          {
              previous = contents;
              current = contents.getNext();
              for (int index = 0; ( (index &lt; count) &amp;&amp; (found == 0) )index++)
                  if (current.getElement() = element)
                      found = 1;
                  else
                  {
                      previous = current;
                      current = current.getNext();
                  }//ends the else statement 
  
              if (found == 0)
                  cout &lt;&lt; "The element is not in the list" &lt;&lt; endl;
              else
              {
                  result = current.getElement();
                  previous.setNext(current.getNext());
              }//ends else statement  
  
          }//ends the else stamtement
  
          count--;
      }//ends the else statement of count == 0
      return result;
  }//ends the remove function
  
  #endif
  </code></pre>
  
  <p>test.cpp:</p>
  
  <pre><code>#include&lt;iostream&gt;
  #include"LinearNode.h"
  #include"LinkedList.h"
  
  using namespace std;
  
  int main()
  {
  
      LinearNode node1, node2, node3, move;
      LinkedList list;    
  
      node1.setElement(1);
      node2.setElement(2);
      node3.setElement(3);
  }   
  </code></pre>