Когда я пытаюсь добавить человека в вектор, он не работает + Я не могу добавить более одного человека. Im довольно новичок в C++, и я не могу понять это. Извините за мой английский :(Спасибо за любую помощь/советы. Я искал его и пытался много чего, но не мог заставить его работать в любом случае. Что я делаю неправильно или, может быть, этот код в беспорядке?C++: распределение динамической памяти + вектор
class Osoba
{
public:
char *name, *surname, *phone;
Osoba();
Osoba(const char *name, const char *surname, const char *phone);
~Osoba();
};
inline Osoba::Osoba(){};
inline Osoba::Osoba(const char *name, const char *surname, const char *phone)
{
Osoba::name = new char[strlen(name) + 10];
strcpy(Osoba::name, name);
Osoba::surname = new char[strlen(surname) + 1];
strcpy(Osoba::surname, surname);
Osoba::phone = new char[strlen(phone) + 1];
strcpy(Osoba::phone, phone);
}
inline Osoba::~Osoba()
{
delete name;
delete surname;
delete phone;
}
int main()
{
const char *name2, *surname2, *phone2;
vector <Osoba> osoba;
cout << "\n1.-Workers list\n2.-Add person\n3.-Quit";
char odp;
do
{
odp = getch();
switch (odp)
{
case '1':
cout << "\n\n\nList:\n";
for (int i = 0; i < osoba.size(); i++)
{
cout << endl;
cout << "Name: " << osoba[i].name << endl;
cout << "Surname: " << osoba[i].surname << endl;
cout << "Phone: " << osoba[i].phone << endl;
}
break;
case '2':
cout << "\n\nADD PERSON";
cout << "\nName: ";
string name;
cin >> name;
name2 = name.c_str();
cout << "Surname: ";
string surname;
cin >> surname;
surname2 = surname.c_str();
cout << "Phone: ";
string phone;
cin >> phone;
phone2 = phone.c_str();
osoba.push_back(Osoba(name2, surname2, phone2));
break;
}
} while (odp != '3');
return 0;
}
Если вы думаете, у вас есть проблемы, кладя объекты в векторах, то вы должны написать пример наименьшего рабочего кода, который подчеркивает проблему. – juanchopanza
Какова фактическая ошибка? Кроме того, у вас есть несоответствие распределителя - вам нужно «удалить []» материал, выделенный с помощью 'new []'. Также у вашего класса отсутствует копирование и перемещение конструкторов. – Neil
«Это не работает» ?? –