Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: D3US en 1 Agosto 2021, 19:13 pm



Título: Almacenar objetos dentro de otra clase
Publicado por: D3US en 1 Agosto 2021, 19:13 pm
Hola y saludos:
Como almaceno en el vector lista el Objeto Persona y como accedo a esa informacion cuando la necesite.
Gracias de antemano.

#include <iostream>
#include <vector>
#include <conio.h>
#include <string>

using namespace std;

class Persona{
    private:
        string  nombre;
    public:
        Persona(string nombre){
            setNombre(nombre);
        }
        void setNombre(string _nombre){
            nombre = _nombre;
        }
        string getNombre(){
            return nombre;
        }
};

class Trabajo{
    private:
        float salario;

        vector <Trabajo> lista;

    public:
        Trabajo(string nombre, float salario){
            setSalario(salario);
        }
        void setSalario(float _salario){
        salario = _salario;
        }
        float getSalario(){
            return salario;
        }

};
int main(){

return 0;
}



Título: Re: Almacenar objetos dentro de otra clase
Publicado por: BloodSharp en 1 Agosto 2021, 21:12 pm
Como almaceno en el vector lista el Objeto Persona y como accedo a esa informacion cuando la necesite.

Te corregí un poco el programa, el salario debería tenerlo cada persona en lugar de la clase Trabajo. Por otro lado es buena práctica evitar el uso de using namespace std;.
Finalmente tenés que crear una estructura temporal la cuál vas a agregar los datos que necesites y luego apilar en el vector cada persona:

Código
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. class Persona
  6. {
  7.    private:
  8.        std::string nombre;
  9.        float salario;
  10.  
  11.    public:
  12.        Persona()
  13.        {
  14.            this->nombre.assign("SinNombre");
  15.            this->salario = 0.0f;
  16.        }
  17.        void setNombre(std::string nombre)
  18.        {
  19.            this->nombre.assign(nombre);
  20.        }
  21.        std::string getNombre()
  22.        {
  23.            return nombre;
  24.        }
  25.        void setSalario(float salario)
  26.        {
  27.            this->salario = salario;
  28.        }
  29.        float getSalario()
  30.        {
  31.            return salario;
  32.        }
  33. };
  34.  
  35. class Trabajo
  36. {
  37.    private:
  38.        std::vector<Persona>lista;
  39.  
  40.    public:
  41.        Trabajo()
  42.        {
  43.            this->lista.clear();
  44.        }
  45.        ~Trabajo()
  46.        {
  47.            this->lista.clear();
  48.        }
  49.        void AniadirPersonal()
  50.        {
  51.            Persona tmpPersona;
  52.            tmpPersona.setNombre("Cosme");
  53.            tmpPersona.setSalario(1000.0f);
  54.            this->lista.push_back(tmpPersona);
  55.  
  56.            tmpPersona.setNombre("Fulanito");
  57.            tmpPersona.setSalario(2000.0f);
  58.            this->lista.push_back(tmpPersona);
  59.        }
  60.        void MostrarPersonal()
  61.        {
  62.            for(Persona persona: this->lista)
  63.            {
  64.                std::cout << persona.getNombre() << " - $" << persona.getSalario() << std::endl;
  65.            }
  66.        }
  67. };
  68.  
  69. int main()
  70. {
  71.    Trabajo laburo;
  72.    laburo.AniadirPersonal();
  73.    laburo.MostrarPersonal();
  74.    return 0;
  75. }


B#