Como faço para declarar o tamanho de uma matriz de string se for uma função de membro

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

  •  21-09-2019
  •  | 
  •  

Pergunta

Tenho um problema em definir o tamanho da minha matriz. No meu código que tenho:

class Test {
    public:
       ....//Functions
    private:
      string name[];
};

Test() {
   //heres where i want to declare the size of the array
}

Isso é possível?

Foi útil?

Solução

Não. Mas você pode usar um vetor de cordas:

private:
  std::vector<std::string> name;

Então, em seu construtor:

Test()
    : name(sizeOfTheArray)
{
}

O vetor será dimensionado para o número de strings que você especificar. Isso significa que toda a memória para as strings será alocada de uma só vez. Você pode alterar o tamanho da matriz como desejar, mas não há nada dizendo que você precisa. Assim, você obtém todos os benefícios de usar uma matriz alocada dinamicamente e, em seguida, alguns, sem as desvantagens.

Outras dicas

Você precisará alocar dinamicamente a memória para a matriz usando new.

Declare a variável como esta:

private:
    string* name;

E em seu construtor faça isso:

int size = ...
name = new string[size];

E liberte a memória no destruidor como este:

delete [] name;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top