C++ OOP vectores de clases - como crear un vector de una clase

Iniciado por GisiNA, 15 Febrero 2017, 15:42 PM

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

GisiNA

#20
Cita de: ivancea96 en 20 Febrero 2017, 19:24 PM
Me estás diciendo que teiens problemas pero no me estás enseñando el código con esos problemas.

Si tienes un problema, enseña el código que da ese problema, y los errores que genera.


Efectivamente he colocado el código con problemas. Y el error correspondiente que arroja también.
Ambos en el mensaje previo al anterior.
Por lo demás, di respuesta a tu comentario que dice que el vector se encuentra comentado y que sobre esa base es que el compilador no puede hallar al objeto database. Mi correspondiente respuesta fue que he ubicado el vector bajo public (comparar las líneas 41 y 38).

ivancea96

Esque en ese código, el error tampoco es coherente al código:

Código (cpp) [Seleccionar]
void patInsert(vector<Patient>& manyPatientFull)
{
     manyPatientFull.push_back(database);
     cout << endl;
}


In member function 'void PatientDatabase::patInsert(std::vector<Patient>&)':
prog.cpp:48:10: error: 'manyPatient' was not declared in this scope
          manyPatient.push_back(database);


En uno pone manyPatientFull y en otro manyPatient.

Necesito datos reales para ver tu problema.

GisiNA

#22
Hola! Mira, resulta que he hallado, tras mucho experimentar, la solución buscada. La esencia del problema, al menos de acuerdo a mi solución, era colocar al vector dentro de una función. De ese modo es posible trabajar con él y al mismo tiempo, heredar de la clase padre.

Acá dejo el código. De todos modos, no lo hubiera logrado sin tus correcciones!  ;-)
Muchas gracias!

Código (cpp) [Seleccionar]

#include <iostream>
#include <string>
#include <vector>

using namespace std;

//Klasse einrichten
class Patient
{
private:
string fname;
string sname;

void privateFunción()
{
//string _sname, _fname; // Falls man durch Tastatureingabe Vektor füllen
// will.
vector<Patient>vielePatient;
vectorfuellen(vielePatient);
printVector(vielePatient);
}

public:
~Patient(){}

Patient(){ }

// Zum aufrufen der privaten Función
void publicFunción()
{ privateFunción(); };

void setFistname(string _fname)
{ fname = _fname; }

void setSecondname(string _sname)
{ sname = _sname; }

void setName(string _fname, string _sname)
{ fname = _fname;
sname = _sname;}

string getSecondname() const { return sname; }
string getFistname() const { return fname; }



// Función para manipular al vector
// Función 1: llenar el vector
void vectorfuellen(vector<Patient>& f_vielePatient)
{
Patient patient01;
Patient patient02;
Patient patient03;

patient01.setName("me", "mo");
patient02.setName("ma", "mu");
patient03.setName("hu", "ju");

f_vielePatient.push_back(patient01);
f_vielePatient.push_back(patient02);
f_vielePatient.push_back(patient03);

// Falls man durch Tastatureingabe den Vektor füllen will.
// (Muss vieleicht etwas umgestellt werden.)
/*cout<<"Apellido: ";
cin >> _fname;
//patient01.setFistname(_fname);

cout<<"Nombre: ";
cin >> _sname;*/
//patient01.setSecondname(_sname);

//patient01.setName(_fname, _sname);
}

// Función 2: mostrar el vector
void printVector(const vector<Patient>& p_vielePatient){
for(int i=0; i<=p_vielePatient.size(); i++)
{ cout << p_vielePatient[i].getFistname() << " " << p_vielePatient[i].getSecondname() << endl; }
}


};

int main()
{

Patient patient01;
patient01.publicFunción();

return 0;