データベースとレコードの 2 つのクラスがあります。
class Database {
private:
Record* head;
public:
Database(Record*);
Database();
Database(const Database&);
Database& operator= (const Database &data);
};
class Record {
public:
Record(std::string, std::string, int, int, std::string);
Record(const Record&);
Record();
Record* next;
};
今私がこれをするとき
Database PM1, PM2;
//operations on PM1
PM2 = PM1;
PM1 の値が PM2 に割り当てられるだけです。代入オーバーロードは呼び出されません。なぜこれが起こっているのか、私にはわかりません。私もデバッグを試みましたが、関数は決して入力されません。私は何を間違っていますか?
編集:これがオーバーロード関数です。正しくない可能性がありますが、実行することさえできないため、まだテストできていません。
Database& Database::operator= (const Database &data) {
if(this == &data)
return *this;
if(data.head == NULL) {
this->head = NULL;
return *this;
}
Record *curr1, *curr2;
curr1 = new Record(*(data.head));
this->head = curr1;
for(curr2 = data.head->next; curr1 != NULL && curr2 != NULL; curr1 = curr1->next) {
curr1->next = new Record(*curr2);
curr2 = curr2->next;
}
return *this;
}