Ciao Gaten...
Un modo strutturare Client potrebbe essere il seguente:
codice:
class Client
{
private:
string name; //nome del cliente
string surname; //cognome del cliente
unsigned int age; //età
public:
private:
public:
Client (string _name, string _surname, unsigned int _age); //costruttore
void setName (string _name); //mi permette di settare il nome
void setSurname (string _surname); //mi permette di settare il cognome
void setAge (unsigned int age); //mi permette di settare l'età
string getName (); //mi permette gi ottenere il nome
string getSurname (); //mi permette di ottenere il cognome
unsigned int getAge (); //mi permette di ottenere l'età
Client &operator= (const Client &rhs); //operatore di assegnamento
[...]
};
Da notare l'overloading dell'operatore di assegnamento, che dovrebbe essere seguito da quello dell'operatore di confronto, etc (in questo modo realizzi una classe più carina e impari qualcosina in più).
Da notare anche l'utilizzo del modificatore "private" sugli attributi (non permetto che vengano modificati dall'esterno, per ovvi motivi): l'utente per ottenere il loro valore e per settarlo dovrà utilizzare i metodi get e set rispettivamente.
Il codice potrà sembrare insensatamente lungo, ma alla fine vale la pena scrivere qualcosa in più, per ottenere un prodotto finale più chiaro e "usabile".
Naturalmente non dimenticare l'overloading degli operatori di inserimento nello stream (<<) e di estrazione dallo stream (>>), per la classe ostream :
codice:
ostream& operator<< (ostream& os, const Client& client) //overloading operatore di inserimento nello stream di ostream
{
return os
<< "Nome: " << client.getName () << endl
<< "Cognome: " << client.getSurname () << endl
<< "Età: " << client.getAge () << endl;
}
[...]
Per il resto del programma puoi lavorare come hai sempre fatto (prima cammina e poi corri)
Un esempio di programma potrebbe essere il seguente:
codice:
#include <iostream>
#include <deque>
using namespace std;
bool dispatcher (deque<Clients> &clients); //"gestisce" le richieste dell'utente chiamando le opportune procedure
main ()
{
deque<Client> clients; //questi sono tutti i clienti
while (dispatcher(clients)); //main loop
return EXIT_SUCCESS;
}
bool dispatcher (deque<Clients> &clients)
{
int request;
cout << "\t1 . Inserisci Cliente:\n";
cout << "\t2 . Cerca Cliente:\n";
cout << "\t0 . Esci:\n";
cin >> request;
switch (request)
{
case 1:
...
break;
case 2:
...
break;
case 0:
return false;
default:
...
};
return true;
}
Utilizzando quindi il classico approccio procedurale per gestire le classi da te create più altri oggetti della standard library di cpp (come deque).
Troverai semplice lavorare con la classe Client.
Ad esempio per stampare un cliente ti basterà fare
codice:
Client c("Paolo", "Rizz.", 20);
cout << c;
Oppure per stamparli tutti:
codice:
for (deque<Client>::iterator i = clients.begin(); i != clients.end(); i++)
cout << *i << endl;
Molto più semplice e compatto.
Prova a fare una tua implementazione.
Considera che ho buttatò giù il codice senza provalo quindi potrei aver fatto errori grossolani e non.