Almacenar objetos dentro de otra clase

Iniciado por D3US, 1 Agosto 2021, 19:13 PM

0 Miembros y 1 Visitante están viendo este tema.

D3US

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;
}


BloodSharp

Cita de: D3US en  1 Agosto 2021, 19:13 PMComo 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 (cpp) [Seleccionar]
#include <iostream>
#include <vector>
#include <string>

class Persona
{
    private:
        std::string nombre;
        float salario;

    public:
        Persona()
        {
            this->nombre.assign("SinNombre");
            this->salario = 0.0f;
        }
        void setNombre(std::string nombre)
        {
            this->nombre.assign(nombre);
        }
        std::string getNombre()
        {
            return nombre;
        }
        void setSalario(float salario)
        {
            this->salario = salario;
        }
        float getSalario()
        {
            return salario;
        }
};

class Trabajo
{
    private:
        std::vector<Persona>lista;

    public:
        Trabajo()
        {
            this->lista.clear();
        }
        ~Trabajo()
        {
            this->lista.clear();
        }
        void AniadirPersonal()
        {
            Persona tmpPersona;
            tmpPersona.setNombre("Cosme");
            tmpPersona.setSalario(1000.0f);
            this->lista.push_back(tmpPersona);

            tmpPersona.setNombre("Fulanito");
            tmpPersona.setSalario(2000.0f);
            this->lista.push_back(tmpPersona);
        }
        void MostrarPersonal()
        {
            for(Persona persona: this->lista)
            {
                std::cout << persona.getNombre() << " - $" << persona.getSalario() << std::endl;
            }
        }
};

int main()
{
    Trabajo laburo;
    laburo.AniadirPersonal();
    laburo.MostrarPersonal();
    return 0;
}



B#