ng
Legacy Member
Goed, vandaag wat gewerkt aan een oefening voor m'n examen. Er staan geen fouten in (toch geen syntax fouten), maar als ik het laat runnen dan krijg ik dus de foutmelding die vermeld staat in de threadtitel.
de header file
en de cpp
de header file
Code:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
#ifndef Persoon_h
#define Persoon_h
class Persoon
{
public:
enum Geslacht {MAN, VROUW};
private:
Geslacht mygeslacht;
string myvoornaam;
string myfamilienaam;
Persoon* mymoeder;
Persoon* myvader;
Persoon** mykinderen;
int mymax;
public:
Persoon (string voornaam= "", string familienaam="", Geslacht g = MAN);
Persoon (const Persoon& p);
~Persoon ();
string getVoornaam () const;
void setVoornaam (string voornaam);
string getFamilienaam () const;
void setFamilienaam (string familienaam);
int getMax () const;
void setMax (int max);
Geslacht getGeslacht () const;
void setGeslacht (Geslacht g);
void veranderVader (Persoon* M);
void veranderMoeder (Persoon* V);
void voegtoeKind (Persoon* K);
void verwijderKind (Persoon* K);
string toString () const;
};
#endif
en de cpp
Code:
#include "oefening12.h"
Persoon::Persoon (string voornaam, string familienaam, Geslacht g)
{
myvoornaam = voornaam;
myfamilienaam = familienaam;
mygeslacht = g;
mymax = 5;
mykinderen = new Persoon* [mymax];
for (int i=0; i<mymax; i++)
mykinderen[i]=NULL;
}
Persoon::Persoon (const Persoon& p)
{
myvoornaam = p.getVoornaam ();
myfamilienaam = p.getFamilienaam ();
mymax = p.getMax ();
mygeslacht = p.getGeslacht ();
}
Persoon::~Persoon ()
{
}
string Persoon::getVoornaam () const
{
return myvoornaam;
}
void Persoon::setVoornaam (string voornaam)
{
myvoornaam = voornaam;
}
string Persoon::getFamilienaam () const
{
return myfamilienaam;
}
void Persoon::setFamilienaam (string familienaam)
{
myfamilienaam = familienaam;
}
int Persoon::getMax () const
{
return mymax;
}
void Persoon::setMax (int max)
{
mymax = max;
}
Persoon::Geslacht Persoon::getGeslacht () const
{
return mygeslacht;
}
void Persoon::setGeslacht (Geslacht g)
{
mygeslacht = g;
}
void Persoon::veranderVader (Persoon* M)
{
if (M->getGeslacht ()==MAN)
myvader = M;
}
void Persoon::veranderMoeder (Persoon* V)
{
if (V->getGeslacht ()== VROUW)
mymoeder = V;
}
void Persoon::voegtoeKind (Persoon* K)
{
for (int i=0; i<mymax; i++)
{
if (mykinderen[i] == NULL)
{
mykinderen[i] = K;
i=mymax;
}
}
}
void Persoon::verwijderKind (Persoon* K)
{
for (int i=0; i<mymax; i++)
{
if (mykinderen[i] == K)
{
delete mykinderen[i];
mykinderen[i]=NULL;
}
}
}
string Persoon::toString () const
{
stringstream ss;
ss<<myvoornaam<<" "<<myfamilienaam<<endl;
if (mymoeder->getVoornaam ()!=""||myvader->getFamilienaam ()!="")
{
if (mygeslacht == MAN)
ss<<"Zoon van: ";
else
ss<<"Dochter van: ";
if (mymoeder->getVoornaam ()!="")
ss<<mymoeder->getVoornaam ()<<" "<<mymoeder->getFamilienaam ()<<" en ";
if (myvader->getVoornaam ()!="")
ss<<myvader->getVoornaam ()<<" "<<myvader->getFamilienaam ()<<endl;
}
if (mykinderen[0]!=NULL)
{
if (mygeslacht == MAN)
ss<<"Vader van: ";
else
ss<<"Moeder van: ";
for (int i=0; i<mymax; i++)
ss<<mykinderen[i]->getVoornaam() <<" "<<mykinderen[i]->getFamilienaam()<<", ";
}
return ss.str ();
}
int main ()
{
Persoon* p1 = new Persoon ("William Henry", "Gates", Persoon::MAN);
Persoon* p2 = new Persoon ("Kristanne", "Gates", Persoon::VROUW);
Persoon* p3 = new Persoon ("Mary", "Maxwell", Persoon::VROUW);
Persoon* p4 = new Persoon ("William Henry Jr.", "Gates", Persoon::MAN);
Persoon* p5 = new Persoon ("William Henry Sr.", "Gates", Persoon::MAN);
Persoon* p6 = new Persoon ("Lillian Elizabeth", "Rice", Persoon::VROUW);
Persoon* p7 = new Persoon ("James Willard", "Maxwell", Persoon::MAN);
Persoon* p8 = new Persoon ("Adele", "Thompson", Persoon::VROUW);
p1->veranderMoeder (p3);
p1->veranderVader (p4);
p2->veranderMoeder (p3);
p2->veranderVader (p4);
p3->veranderMoeder (p8);
p3->veranderVader (p7);
p5->veranderVader (p4);
p6->veranderVader (p4);
delete [] p8;
cout << p1->toString () << endl;
cout << p2->toString () << endl;
cout << p3->toString () << endl;
cout << p4->toString () << endl;
cout << p5->toString () << endl;
cout << p6->toString () << endl;
cout << p7->toString () << endl;
cin.get ();
return 0;
}
Naming conventions ftw!
