Hola!
Ya de a poco voy entendiendo mejor los conceptos. Como indicas hice el cambio de los nombres de los parametros.
Ahora bien, database es mi objeto que pretendo almacenar en el vector. maniPatien es el nombe del vector. Por lo que tengo entendido es que la sintaxis de un un push_back es:
NombreVector.push_back(ObjetoAAgregarEnVector);
Yo quiero trapasar mi objeto creado en main database al vector.
void patInsert(vector<Patient>& database)
{
//NombreVector.push_back(ObjetoAAgregarEnVector);
manyPatient.push_back(database);
cout << endl;
}
El objeto database lo tengo creado con la siguiente declaración:
// Las variables
string _sname, _fname;
// Creación objeto database de la clase PatientDatabase
PatientDatabase database;
// Se llenan las variables
cout<<"Apellido: ";
cin >> _fname;
cout<<"Nombre: ";
cin >> _sname;
// Se traspasa la información de las variables por setter.
database.setName(_fname, _sname);
Quizás, lo que me intentas señalar es que el vector no debería estar colocado en una clase que hereda sino en la misma clase a la que pertenece. Y que por eso el compilador no reconoce al objeto database creado en main.
Es ese error lógico mío que intentas hacerme entender?
Saludos y muchas gracias.
Dejo acá el código completo:
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <stdio.h>
#include <vector>
using namespace std;
class Patient
{
protected:
string fname;
string sname;
public:
~Patient(){}
Patient(){ }
void setName(string _fname, string _sname)
{ fname = _fname;
sname = _sname;}
/*void setFirstname(string _fname)
{ fname = _fname; }
void setSecondname(string _sname)
{ sname = _sname; }*/
string getSecondname() const { return sname; }
string getFirstname() const { return fname; }
};
class PatientDatabase : public Patient
{
private:
//vector tipo clase Patient.
//vector<Patient> manyPatient;
public:
PatientDatabase(){}
vector<Patient> manyPatient;
//Copia del vector clase Patient
/*vector<Patient> GetCopyOfVector()
{ return manyPatient; }*/
// Escribir en la copia del vector
void patInsert(vector<Patient>& manyPatientFull)
{
manyPatientFull.push_back(database);
cout << endl;
}
// Imprimir el vector en pantalla
void printVectorPatientDatabase(const vector<Patient>& manyPatientShow)
{
int i;
int size = manyPatientShow.size();
for(i=0; i<size; i++)
{
cout << manyPatientShow[i].getFirstname() << " " << manyPatientShow[i].getSecondname() << endl;
}
}
};
int main()
{
string _sname, _fname;
PatientDatabase database;
cout<<"Apellido: ";
cin >> _fname;
cout<<"Nombre: ";
cin >> _sname;
database.setName(_fname, _sname);
return 0;
}
Y acá el error:
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);