Wie erkläre ich die Größe eines String -Arrays, wenn es sich um eine Mitgliedsfunktion handelt?
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?
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;