Witam,
napisałem taki prosty program:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class czlowiek {
private:
int liczbaludzi;
string Nazwa;
vector<czlowiek*> vLudzie;
vector<czlowiek*>::iterator it;
string jakanazwa;
public:
czlowiek();
~czlowiek();
string WyjebNazwe();
};
czlowiek::czlowiek(){
cout << "WASSSSUUUP, Podaj moje imie!" << endl;
cin >> Nazwa;
};
czlowiek::~czlowiek(){
cout << endl << "FFFFFFUUUUUUUUUU-" << endl << "Ja, " << Nazwa << ", umrzywam. :<" <<endl;
};
string czlowiek::WyjebNazwe(){
return Nazwa;
};
int main(){
int liczbaludzi;
vector<czlowiek*> vLudzie;
vector<czlowiek*>::iterator it;
string jakanazwa;
// TWORZENIE I NAZYWANIE LUDZI
cout << "Ilu ludzi tworzymy? ";
cin >> liczbaludzi;
for (int i = 0; i < liczbaludzi; i++){
vLudzie.push_back(new czlowiek());
}
// SZUKANIE LUDZI
cout << "Czlowieka o jakiej nazwie mam znalezc? ";
cin >> jakanazwa;
for(it = vLudzie.begin(); it!=vLudzie.end(); it++)
{
if ((*it)->WyjebNazwe() == jakanazwa)
cout << "Jest z nami " << (*it)->WyjebNazwe() << "! :D" << endl;
}
// USUWANIE PODANEGO CZLOWIEKA
cout << "Kogo mam dzis skasowac? >:D";
cin >> jakanazwa;
for(it = vLudzie.begin(); it!=vLudzie.end(); it++)
{
if ((*it)->WyjebNazwe() == jakanazwa)
delete (*it);
}
system("pause");
return 0;
};
i chcę go teraz przerobić tak, aby w funkcji main() wywołać jedynie metody, np.:
czlowiek.TworzenieLudzi();
czlowiek.NazywanieLudzi();
czlowiek.SzukanieLudzi();
czlowiek.UsuwanieLudzi();
Aktualnie nazywanie ludzi mam w konstruktorze, więc borykam się z jednym problemem. Z tego co mi wiadomo, aby korzystać z programu w sposób, jaki napisałem powyżej (w funkcji main() tylko metody) muszę najpierw utworzyć obiekt danego typu.
czlowiek Ludek;
Ludek.TworzenieLudzi();
Ludek.NazywanieLudzi();
Ludek.SzukanieLudzi();
Ludek.UsuwanieLudzi();
i wszystko byłoby fajnie, gdyby nie nazywanie w konstruktorze. Przy utworzeniu obiektu klasy czlowiek generowany jest pierwszy Ludek, który już pyta mnie o imię. Chcę, aby pytał mnie o imię dopiero przy wywoływaniu funkcji składowych.
W jaki sposób to zrobić?