Data Structure C++

#include 
#include 
#include 
using namespace std;
class name {
  string str;
public:
  name() { 
      str = ""; 
  }
  name(string s) { 
      str = s; 
  }
  string get() { 
      return str; 
  }
};
// Define less than relative to name objects.
bool operator<(name a, name b){
   return a.get() < b.get();
}
class phoneNum {
  string str;
public:
  phoneNum() { 
      str = ""; 
  }
  phoneNum(string s) { 
      str = s; 
  }
  string get() { 
      return str; 
  }
};
int main()
{
  map directory;
  directory.insert(pair(name("J"), phoneNum("999-1111")));
  directory.insert(pair(name("C"), phoneNum("999-2222")));
  directory.insert(pair(name("J"),  phoneNum("555-3333")));
  directory.insert(pair(name("T"),phoneNum("4444")));
  // given a name, find number
  string str;
  cout << "Enter name: ";
  cin >> str;
  map::iterator p;
  
  p = directory.find(name(str));
  if(p != directory.end()) 
    cout << "Phone number: " <<  p->second.get();
  else
    cout << "Name not in directory.\n";
  return 0;
}