Data Structure C++

#include 
#include 
#include 
using namespace std;
class StringClass {
  char str[20];
public:
  StringClass() { 
     strcpy(str, ""); 
  }
  StringClass(char *s) { 
     strcpy(str, s); 
  }
  char *get() { 
     return str; 
  }
};
// must define less than relative to StringClass objects
bool operator<(StringClass a, StringClass b)
{
   return strcmp(a.get(), b.get()) < 0;
}
class opposite {
  char str[20];
public:
  opposite() { 
     strcmp(str, ""); 
  }
  opposite(char *s) { 
     strcpy(str, s); 
  }
  char *get() { 
     return str; 
  }
};
int main()
{
  map mapObject;
  mapObject.insert(pair(StringClass("yes"), opposite("no")));
  mapObject.insert(pair(StringClass("good"), opposite("bad")));
  mapObject.insert(pair(StringClass("left"), opposite("right")));
  mapObject.insert(pair(StringClass("up"), opposite("down")));
  char str[80];
  cout << "Enter word: ";
  cin >> str;
  map::iterator p;
  
  p = mapObject.find(StringClass(str));
  if(p != mapObject.end()) 
    cout << "Opposite: " <<  p->second.get();
  else
    cout << "Word not in map.\n";
  return 0;
}