Я создаю класс ADT, используя статические массивы, и другой класс под названием «Пациент», содержащий личную информацию людей. Проблема заключается в том, что если я создаю объект Patient и вставляю его в массив, а затем изменяю значение этого объекта, печать массива дает значения старых объектов, даже если печать самого объекта дает измененные значения.
Я добавил оператор = функцию, копирующую значения, но это мне не помогло.
list.h
class List {
private:
static const int MAX_ELEMENTS = 5;
Patient elements[MAX_ELEMENTS];
int elementCount;
public:
List();
int getElementCount() const;
bool insert(const Patient& newElement);
void print();
};
Patient.h
class Patient {
private:
string name;
string home_address;
string phone_number;
string email_address;
public:
Patient();
Patient(string aName, string anAddress, string Aphone, string anEmail);
Patient(const Patient& obj);
// + all the getters and setters for the private values
friend ostream & operator<<(ostream & os, const Patient & p);
Patient& operator=(const Patient& p);
};
функция Инстерта
bool List::insert(const Patient& newElement)
{
bool flag = true;
for (int i = 0; i < elementCount; i++)
{
if (elements[i] == newElement)
{
flag = false;
break;
}
}
if (flag == true && elementCount <= capacity)
{
elements[elementCount] = newElement;
elementCount++;
}
else
flag = false;
return flag;
}
оператор = функция
Patient & Patient::operator=(const Patient & person)
{
name = person.name;
home_address = person.home_address;
phone_number = person.phone_number;
email_address = person.email_address;
return *this;
}
К сожалению, я не могу поделиться файлами .cpp.
Это когда печатается массив только с одним объектом.
Patient: To be entered, To be entered, To be entered, To be entered
Задание имени и адреса электронной почты и печать объекта с использованием собственной перегруженной функции оператора <<, и это желаемый вывод при печати массива. </p>
Patient: bob, To be entered, To be entered, bob@mail.com
Фактическая выработка.
Patient: To be entered, To be entered, To be entered, To be entered