Data Structure C++

#include 
#include 
#include 
using namespace std;
class Project {
public:
  char name[40];
  int duration;
  Project() { 
    strcpy(name, "");
    duration = 0;
  }
  Project(char *n, int d) {
    strcpy(name, n);
    duration = d;
  }
  void add_days(int i) {
    duration += i;
  }
  void sub_days(int i) {
    duration -= i;
  }
  bool completed() { 
     return !duration; 
  }
 
  void report() {
    cout << name << ": ";
    cout << duration;
    cout << " days left.\n";
  }
};
bool operator<(const Project &a, const Project &b)
{
  return a.duration < b.duration;
}
bool operator>(const Project &a, const Project &b)
{
  return a.duration > b.duration;
}
bool operator==(const Project &a, const Project &b)
{
  return a.duration == b.duration;
}
bool operator!=(const Project &a, const Project &b)
{
  return a.duration != b.duration;
}
int main()
{
  list proj;
  proj.push_back(Project("Project 1", 35));
  proj.push_back(Project("Project 2", 190));
  proj.push_back(Project("Project 3", 1000));
  list::iterator p = proj.begin();
  while(p != proj.end()) {
    p->report();
    p++;
  }
  p = proj.begin();
  p->add_days(10);
  do {
    p->sub_days(5);
    p->report();
  } while (!p->completed());
  return 0;
}