Come dichiaro la dimensione di un array di stringhe, se si tratta di una funzione membro
Domanda
Ho un problema con l'impostazione delle dimensioni del mio array. Nel mio codice che ho:
class Test {
public:
....//Functions
private:
string name[];
};
Test() {
//heres where i want to declare the size of the array
}
È possibile?
Soluzione
No. Ma si potrebbe usare un vettore di stringhe invece:
private:
std::vector<std::string> name;
Poi nel costruttore:
Test()
: name(sizeOfTheArray)
{
}
Il vettore sarà dimensionato per il numero di stringhe specificate. Ciò significa tutta la memoria per le stringhe sarà assegnata contemporaneamente. È possibile modificare la dimensione della matrice come si desidera, ma non c'è niente dicendo che dovete. Così, si ottengono tutti i vantaggi di utilizzare un array allocato dinamicamente, e poi alcuni, senza gli svantaggi.
Altri suggerimenti
Sarà necessario allocare dinamicamente la memoria per l'array utilizzando new
.
Dichiarare la variabile in questo modo:
private:
string* name;
E nel costruttore fare questo:
int size = ...
name = new string[size];
E liberare la memoria nel distruttore in questo modo:
delete [] name;