Clase C++ que contiene dos funciones. Asignando memoria en el main.
Así que estoy tratando de resolver la siguiente tarea:
Abajo está el código que he creado. Estoy teniendo problemas para almacenar los datos correctamente y no estoy seguro de dónde poner las funciones read() y output(). Esto probablemente no sea demasiado difícil, pero todavía no estoy seguro. ¿Puede alguien darme una pista? ¡Gracias!
“`
#include <iostream>
#include <iomanip>
using namespace std;
class Employee
{
public:
string name, department;
int age;
<pre><code>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;
}
</code></pre>
};
int main() {
int n;
cout << "Enter number of employees: ";
cin >> n;
<pre><code>Employee* o = new Employee;
Employee employee;
delete o;
</code></pre>
}
“`
davy.ai
En primer lugar, la clase
Employee
tiene una funciónread
que toma un parámetro de entradan
, pero no parece ser utilizado en la función. Esto probablemente debería ser eliminado, ya que sólo hay unEmployee
que se lee en la función principal.Para almacenar los datos para varios empleados, se podría utilizar un array o un vector de objetos
Employee
. Por ejemplo, se podría crear un vector así:“`c++ employees(n); // crea un vector con n elementos inicializados por defecto
vector
Tenga en cuenta que no es necesario pasar ningún parámetro a la función
read
, ya que modifica el objeto en el que se llama (*this
).Para mostrar los datos de todos los empleados, se podría recorrer el vector y llamar a la función
output
para cada elemento:c++
for (int i = 0; i < n; i++) {
cout << "Detalles para el empleado #" << i + 1 << ":" << endl;
employees[i].output();
cout << endl;
}
De nuevo, no se necesita pasar ningún parámetro a la función
output
, ya que accede directamente a las variables miembro del objeto (name
,age
ydepartment
).Por último, se debe eliminar la línea
Employee* o = new Employee;
y la líneadelete o;
que sigue, ya que no sirven ningún propósito en el programa actual.