Класс C++, содержащий две функции. Выделение памяти в основном

0

Вопрос

поэтому я пытаюсь решить следующую задачу:

Task

Ниже приведен код, который я придумал. У меня возникли проблемы с правильным хранением данных, и я не уверен, куда поместить функцию чтения() и вывода (). Вероятно, это не так уж сложно, но я все еще не уверен. Может кто-нибудь, может быть, даст мне подсказку? Спасибо!

 #include <iostream>
#include <iomanip>

using namespace std;

class Employee
{
public:
    string name, department;
    int age;

    void output(string &a, int &b, string &c)
    {
        cout << name << endl;
        cout << "Age: " << age << " years" << endl;
        cout << "Department: " << department << endl;
    }

    void read(int &n)
    {
            cout << "Enter number, last name and first name:";
            cin >> name;

            cout << "Enter age:";
            cin >> age;

            cout << "Enter department:";
            cin >> department;
        }
};

int main() {
    int n;
    cout << "Enter number of employees: ";
    cin >> n;
    Employee* o = new Employee;
    Employee employee;



   delete o;
}
c++ c++14 class dynamic
2021-11-23 19:11:33
1

Лучший ответ

0

Без запуска вашего кода это выглядит довольно близко к рабочему решению Вы сохраняете данные в полях экземпляра вашего класса Employee

которые вы храните где-то в куче. И доступ с помощью указателя o

некоторые предложения:

Нет необходимости передавать что-либо в функцию чтения, она считывает данные об одном сотруднике за вызов.

Если вы хотите создать несколько сотрудников, вам нужно создать вектор для их удержания, затем цикл for, который выполняется n раз, и внутри этого цикла for создайте нового сотрудника, вызовите его функции чтения и вывода и добавьте их в вектор (в противном случае вы потеряете указатели и возникнет утечка памяти).

Используйте o->read() для разыменования указателя и вызова его функции чтения.

Поля вашего сотрудника лучше всего сделать частными переменными-членами. Т. е. имя,отдел, возраст. Это все равно будет скомпилировано и запущено, но лучше сделать вещи частными, если только им не нужно быть общедоступными.

Кроме того, я не думаю, что вам нужна последняя строка, вы уже создали нового сотрудника и указатель на него в строке выше.

наконец, когда вы перейдете к удалению, просто повторите свой вектор сотрудников и удалите каждого из них.

В данный момент у меня мало времени, но я постараюсь вернуться и добавить несколько примеров кода позже, если они вам понадобятся.

2021-11-24 20:52:16

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................