PDA

Visualizza la versione completa : [C++] Esercizio con puntatori e classi


the-bit
27-08-2007, 20:54
Buona Sera,

essendo alle prime armi con il C++, mi sto dilettando a svolgere questo esercizio:

"Implementare una classe 'Person' che preveda due campi 'nome' e 'eta', e una classe 'Car' che preveda i tre campi di seguito:
- il modello;
- un puntatore che fa riferimento al proprietario (un oggetto Person*);
- un puntatore che fa riferimento al conducente (anche in questo caso un oggetto Person*).

Scrivere, quindi, un programma che chieda all'utente di indicare le persone e le auto. Memorizzare i dati rispettivamente in un 'vector<Person*>' e in un 'vector<Car*>'. Scorrere il vettore di oggetti 'Person' e incrementare l'eta di ciascuno. Infine, scorrere il vettore delle auto e visualizzare il modello, il nome e l'eta del proprietario, il nome e l'eta del conducente'.

Ho provato a svolgere l-esercizio scrivendo i due file .h in questo modo;

//////////////////////////////////////////
Car.h

#include <string>

using namespace std;

class Car
{
public:
Car(string mod);
void set_proprietario(Person* p);
void set_conducente(Person* p);


private:
string modello;
Person* proprietario;
Person* conducente;
};

Car::Car(string mod)
{
modello = mod;
proprietario = NULL;
conducente = NULL;
}
void Car::set_proprietario(Person* p)
{
proprietario = p;
}
void Car::set_conducente(Person* p)
{
conducente = p;
}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
////////////////////////////////////////
Person.h


#include <iostream>
#include <string>

using namespace std;

class Person
{
public:
Person();
Person(string nome, int eta);
void set_nome(string nome);
void set_eta(int eta);
string get_nome();
int get_eta();
private:
string Nome;
int Eta;
};

Person::Person()
{}
Person::Person(string nome, int eta)
{
Nome = nome;
Eta = eta;
}
void Person::set_nome(string nome)
{
Nome = nome;
}
void Person::set_eta(int eta)
{
Eta = eta;
}
string Person::get_nome()
{
return Nome;
}
int Person::get_eta()
{
return Eta;
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


Ed ora non saprei come fare, nel main*(), a ottenere quanto chiesto.

Non chiedo la soluzione, ma solo un aiuto a o un suggerimento.
Grazie mille.

Stoicenko
28-08-2007, 00:08
Bè i file .h sembrano appostro.. Ora però devi imparare ad usare l'oggetto vector dell'STL cioè la libreria standard.. (Standard Template Library)

Un piccolo accenno: vector è un contenitore di oggetti (e puntatori ad oggetti), non ordinato ma ordinabile, che contiene al suo interno un iteratore (sempre STL) per poterlo scorrere.. Quindi unja chiamata al "vector<person*> vect"
così:


int e = vect[0]->eta;

è l'età della prima persona (ricordarsi che si parte sempre da 0) e così via..

the-bit
29-08-2007, 12:41
Ciao e grazie per avermi risposto,
ti dico subito che conosco già i vettori: certo, non alla grande, ma qualcosa la so fare.
Il problema è: "come faccio a far si che l'utente inserisca dei dati e vengano impostati tramite set_nome(), ecc.? " Non si può fare qualcosa del tipo


cout << "Inserisci dati ";
cin >> set_anni();


Per questo avrei bisogno di maggiori ionformazioni se non ti spiace. ;-)

Stoicenko
29-08-2007, 12:55
Bè fai così, visto che la funzione è set_eta(int eta) il codice sarebbe:



int et:
cout<<"inserisci età: ";
cin>>et;
vect[0]->set_eta(et);


questo con un vector di person*

the-bit
31-08-2007, 10:12
Grazie mille,
provo e ti faccio sapere.

Loading