Come dichiaro la dimensione di un array di stringhe, se si tratta di una funzione membro

StackOverflow https://stackoverflow.com/questions/2294003

  •  21-09-2019
  •  | 
  •  

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?

È stato utile?

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top