コピーコンストラクターの書き方がわかりません...
これは私のコンストラクタです:
public:
Person(const char * aName, const char * userID, const char * domain, Date aDate) {
//This constructor should create heap objects
name = new char[strlen(aName) + 1];
strcpy (name, aName);
emailAddress = new EmailAddress(userID, domain);
birthday = new Date(aDate);
cout << "\nPerson(...) CREATING: ";
printOn(cout);
}
これは、コピーコンストラクターに対して私がやろうとしていることです:
Person(const Person & p){
name = new char[strlen(p.name)+1];
strcpy(name, p.name);
emailAddress = new EmailAddress(*p.emailAddress);
birthday = new Date(*p.date);
cout << "\nPerson(const Person &) CREATING: ";
printOn(cout);
}
コピー コンストラクターで新しい Date と新しい EmailAddress に何を渡せばよいかわからないため、現在行っていることはまったく機能していません。
これは適切な代入演算子です (ここでも date と emailAddress に何を渡せばよいかわかりません...):
Person & operator=(const Person & p) {
if(&p != this) {
delete [] name;
delete emailAddress;
delete birthday;
name = new char[strlen(p.name) + 1];
strcpy (name, p.name);
emailAddress = new EmailAddress();
birthday = new Date();
}
return *this;
}
どんな助けでも大歓迎です!
編集:
日付の定義
class Date{ //this class is complete
//This class represents a date
public:
Date(int aDay, int aMonth, int aYear) : day(aDay), month(aMonth), year(aYear) {}
Date(const Date & aDate) : day(aDate.day), month(aDate.month), year(aDate.year) {};
void printOn(ostream & out) const {out << day <<"/" << month << "/" << year;}