Wie erkläre ich die Größe eines String -Arrays, wenn es sich um eine Mitgliedsfunktion handelt?

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

  •  21-09-2019
  •  | 
  •  

Frage

Ich habe ein Problem mit der Einstellung der Größe meines Arrays. In meinem Code habe ich:

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

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

Ist das möglich?

War es hilfreich?

Lösung

Nein, aber Sie könnten stattdessen einen Vektor von Strings verwenden:

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

Dann in Ihrem Konstruktor:

Test()
    : name(sizeOfTheArray)
{
}

Der Vektor wird für die Anzahl der von Ihnen angegebenen Zeichenfolgen dimensioniert. Dies bedeutet, dass alle Speicher für die Saiten gleichzeitig zugewiesen werden. Sie können die Größe des Arrays nach Belieben ändern, aber es gibt nichts, was es zu sagen hat. Daher erhalten Sie alle Vorteile der Verwendung eines dynamisch zugewiesenen Arrays und dann ohne die Nachteile.

Andere Tipps

Sie müssen den Speicher für das Array dynamisch zuweisen new.

Deklarieren Sie die Variable wie diese:

private:
    string* name;

Und in Ihrem Konstruktor tun Sie dies:

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

Und befreien Sie die Erinnerung im Destruktor wie folgt:

delete [] name;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top