014
21.02.2017, 13:53 Uhr
GisiNA
|
Hallo ao!
Du sagtest: "Noch einmal, Gisina: Es ist ein falscher Ansatz, PatientDatenbank von Patient abzuleiten!"
Schau mal, ich habe zu meiner Frage mir selber die Antwort geben können, und... oh Wunder(!), es ist absolut doch möglich.
Hier lasse ich Dir den funktionierenden Code, mit ein paar Erklärungen. Ich denke, das ist ein interessantes Thema und, es stimmte wie du meinst, etwas schwer... klar... aber, wie du siehst, doch nicht unmöglich zu lösen!! Ein wenig knobeln, und hin und her probieren, und man findet die Lösung. Ich glaube die Lösung kann Dich interessieren (auch anderen) und, wie mir scheint, dein Wissen über Vektoren type Class vertiefen und erweitern...
Solltest Du fragen haben, stehe ich Dir gerne zur Verfügung!
Und hier der Code:
C++: |
#include <iostream> #include <iomanip> #include <cstdlib> #include <stdio.h> #include <vector> using namespace std; class Patient { protected: string fname; string sname;
public: Patient(){ } ~Patient(){}
// Setters und getters 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; } };
// Die abgeleitete Klasse PatientDatabase übernimmt alles von seiner Vaterklasse // Patient. // Sie enthält den Vektor der die Daten von Patient speichert, die dazugehörigen Funktionen, ihren Konstruktor und ihren Destruktor. class PatientDatabase : public Patient { private: void privateFunktion() { //string _sname, _fname; // Falls man durch Tastatureingabe Vektor füllen // will. vector<Patient>vielePatient; vectorfuellen(vielePatient); printVector(vielePatient); } public: // Zum aufrufen der privaten Funktion die den Vektor enthält void publicFunktion() { privateFunktion(); };
// Funktion zum bearbeiten des Vektors // Funktion 1: zum füllen des Vektors 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);
}
// Funktion 2: zum zeigen des Vektors 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; } }
PatientDatabase(){} ~PatientDatabase(){}
}; int main() { // Erstellen eines Objekts um auf PatientDatabase zugreifen zu können. PatientDatabase patient01; // Aufruf der Funktion die den Vektor enthält. patient01.publicFunktion(); return 0; }
|
Alles gute und vielen Dank für Dein bemühen! Gisi Dieser Post wurde am 21.02.2017 um 14:10 Uhr von GisiNA editiert. |