Undefined symbols for architecture x86_64 - Compiling inherited class
===

I currently have an abstract User class and a Student class which inherits from user. I'm attempting to initialize an instance of the Student class from main. I'm receiving this error 

>Undefined symbols for architecture i386:
 > "Student::Student()", referenced from:
      _main in ccJo7npg.o
  "Student::~Student()", referenced from:
      _main in ccJo7npg.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

User Class:

    #include <iostream>
    #import <stdio.h>
    #import <string.h>
    using namespace std;

    class User
        {
    public:
        void setName(const string n)
    {
        name = n;
    }
    string getName()
    {
        return name;
    }
    void setUsername(const string u)
    {
        username = u;
    }
    string getUsername()
    {
        return username;
    }
    void setPassword(const string p)
    {
        password = p;
    }
    string getPassword()
    {
        return password;
    }
    void setID(const int ID)
    {
        this->ID=ID;
    }
    int getID()
    {
        return ID;
    }
    void setClassID(const int cid)
    {
        classID=cid;
    }
    int getClassID()
    {
        return classID;
    }
    void logOut()
    {
        cout<<"you have logged out"<<endl;
    }
    void print()
    {
        cout<< "Student : "<< ID << name << " "<< username << " " << password << endl;
    }
    virtual void menu()=0;
    protected:
       int classID, ID;
       string name, username, password;
    };

Student Class:

    #include <iostream>
    #include "User.h"
    using namespace std;

    class Student: public User
    {
    public:
    Student()
    {
        classID=0;
        ID=0;
        username="";
        name="";
        password="";
    }
    ~Student()
    {
        cout<<"destructor"<<endl;
    }
    void studyDeck(const int i)
    {
        
    }
    void viewScores(const int)
    {
        
    }
    void viewScores()
    {
        
    }
    virtual void menu()
    {
        cout << "Student menu" << endl;
    }
    };

Main.cpp:

    #include <iostream>
    #include "User.h"
    #include "Student.h"
    using namespace std;

    int main()
    {
        Student s;
        return 0;
    }

I'm compiling with g++ with " g++ User.cpp Student.cpp main.cpp "

Thanks!
