Undefined reference to ...
        Posted  
        
            by Patrick LaChance
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Patrick LaChance
        
        
        
        Published on 2010-04-02T21:52:34Z
        Indexed on 
            2010/04/02
            22:13 UTC
        
        
        Read the original article
        Hit count: 329
        
I keep getting this error message every time I try to compile, and I cannot find out what the problem is. any help would be greatly appreciated:
C:\DOCUME~1\Patrick\LOCALS~1\Temp/ccL92mj9.o:main.cpp:(.txt+0x184): undefined reference to 'List::List()'
C:\DOCUME~1\Patrick\LOCALS~1\Temp/ccL92mj9.o:main.cpp:(.txt+0x184): undefined reference to 'List::add(int)'
collect2:  ld returned 1 exit status
code:
//List.h
#ifndef LIST_H
#define LIST_H
#include <exception>
//brief Definition of linked list class
class List
{
    public:
    /**
    \brief Exception for operating on empty list
    */  
    class Empty : public std::exception
 {
  public:
  virtual const char* what() const throw();
 };
    /**
    \brief Exception for invalid operations other than operating on an empty list
    */
    class InvalidOperation : public std::exception
 {
  public:
  virtual const char* what() const throw();
 };
    /**
    \brief Node within List
    */
    class Node
 {
  public: 
  /** data element stored in this node */
  int element;
  /** next node in list */
  Node* next;
  /** previous node in list */
  Node* previous;
  Node (int element);
  ~Node();
  void print() const;
  void printDebug() const;
 };
    List();
    ~List();
    void add(int element);
    void remove(int element);
    int first()const;
    int last()const;
    int removeFirst();
    int removeLast();
    bool isEmpty()const;
    int size()const;
    void printForward() const;    
    void printReverse() const;
    void printDebug() const;
    /**
    enables extra output for debugging purposes
    */
    static bool traceOn;
    private:
    /** head of list */
    Node* head;
    /** tail of list */
    Node* tail;
    /** count of number of nodes */
    int count;
};
#endif
    
//List.cpp                   I only included the parts of List.cpp that might be the issue
#include "List.h"
#include <iostream>
#include <iomanip>
using namespace std;
List::List()
{
 //List::size = NULL;
 head = NULL;
 tail = NULL;
}
List::~List()
{
 Node* current;
 while(head != NULL)
 {
  current = head-> next;
  delete current->previous;
  if (current->next!=NULL)
  {
   head = current;
  }
  else
  {
   delete current;
  }
 }
}
void List::add(int element)
{
 Node* newNode;
 Node* current;
 newNode->element = element;
 if(newNode->element > head->element)
 {
  current = head->next;
 }
 else
 {
  head->previous = newNode;
  newNode->next = head;
  newNode->previous = NULL;
  return;
 }
 while(newNode->element > current->element)
 {
  current = current->next;
 }
 if(newNode->element <= current->element)
 {
  newNode->previous = current->previous;
  newNode->next = current;
 }
}
    
//main.cpp
#include "List.h"
#include <iostream>
#include <string>
using namespace std;
//void add(int element);
int main (char** argv, int argc)
{    
 List* MyList = new List();
 bool quit = false;
 string value;
 int element;
 while(quit==false)
 {
  cin>>value;
  if(value == "add")
  {
   cin>>element;
   MyList->add(element);
  }
  if(value=="quit")
  {
   quit = true;
  }
 }
    return 0;
}
I'm doing everything I think I'm suppose to be doing. main.cpp isn't complete yet, just trying to get the add function to work first. Any help will be greatly appreciated.
© Stack Overflow or respective owner