PDA

Visualizza la versione completa : [C++] Allocare vettori nel costruttore di una classe


gianfredo
24-08-2011, 12:39
Buongiorno, è da poco che sto studiando il c++, e ora mi sono imbattuto in un programma con le classi. Il programma è abbastanza semplice, ma visto che io sono poco esperto nel campo, ho trovato un po' di difficoltà. Per il nome e il cognome utilizzo due vettori di char (grandezza 15). Se io volessi allocare dinamicamente questi due vettori non sapendo inizialmente come si chiama il cliente come posso fare?? L'allocazione dovrei farla nel costruttore, ma non mi riesce perchè non so a priori la lunghezza del nome e del cognome. Come potrei fare?
In attesa di risposta, grazie.





class Element
{
public:
char nome [15];
char cognome [15];
int anno_di_nascita;
void inserisci_dati ( );
void visualizza( );
Element
{
anno di nascita=0;
}

};



void Element::inserisci_dati( )
{
cout <<" Inserire il nome del cliente: ";
cin >> nome;
cout << endl;

cout <<" Inserire il cognome del cliente: ";
cin >> cognome;
cout << endl;

cout <<" Inserire l' anno di nascita: ";
cin >> anno_di_nascita;
cout << endl;
}

void Element::visualizza( )
{
cout << "Il nome del cliente inserito è: " <<nome << endl;
cout << "Il cognome del cliente inserito è: " <<cognome << endl;
cout << "l'anno di nascita del cliente inserito è: " <<anno_di_nascita << endl;
}

int main()
{
int i(0), n;
cout<<"quanti clienti deve gestire la banca\?"<<endl;
cin>>i;
Element*istanza;
istanza=new Element[i];
for(n=0;n<i;n++)
{
istanza[n].inserisci_dati( );
}
for(n=0;n<i;n++)
{
istanza[n].visualizza();
}
return();
}

shodan
24-08-2011, 18:20
Dovresti usare std::string invece di buffer di caratteri. Così ti risparmi un sacco di grattacapi sulla gestione delle asciiz string (allocazione, deallocazione, quanto è lunga, non acquisisce spazi etc.)

In ogni caso non hai molta scelta. Alloca un buffer che ritieni sufficiente per quello che devi inserire e sta attento a non sforare il limite massimo di caratteri che puoi infilarci.

gianfredo
25-08-2011, 12:26
MI sa che allora lascio così, tanto nomi o cognomi più lunghi di 15 caratteri è raro trovarli!!! Grazie lo stesso :stordita:

Loading