C++: array an Konstruktor übergeben

Ozzy Ozborn

Erfahrenes Mitglied
Hi,

ich fuchse mich zur Zeit wieder in OOP und C++ ein. Momentan schreibe ich ein einfaches Programm um wieder etwas rein zu kommen. Dies hat ein Menü, bei dem jedes einzelne item (Header oder Auswahlpunkt) ein Objekt ist. Das ganze ist dann in einer doppelt verketteten Liste zusammengehalten. Nun möchte ich aber auch die Sprache ändern können. Dafür habe ich mir überlegt statt eines Namens ein Array anzulegen und einfach den Text am entsprechenden Arrayindex auszugeben. Dementsprechend würde ich dem Kontruktor des items ein Array mit dem Namen in der entsprechenden Sprache übergeben.
Nun eine Frage an die Erfahrenen unter Euch: macht das so Sinn? Im Konstruktor muss ich dann doch das übergebene Array kopieren, oder? Und wie kann ich das dann bei der Erstellung am besten erzeugen?
Also so etwas in der Art:
Code:
Item *item = new Item( {"Überschrift", "Header", ... }, ....);
Mit den geschweiften Klammern (so wie bei einem Struct in C) geht das wohl nicht...

Viele Grüße
Ozzy
 
Hallo,
ich würde das Array vorher erstellen und dann nur einen Zeiger darauf übergeben.
Das wäre auch deutlich lesbarer und vorallem editierbarer.

Grüße,
Jennesta
 
Tatsächlich gibt es im C++ 11 oder C++ 14 Standard die Möglichkeit, ein Array so zu initialisieren (und eventuell auch std::vector usw.). Jedenfalls glaube ich, kürzlich etwas davon gelesen zu haben. Befasst habe ich mich damit aber noch nicht, weil ich es nicht benötigt habe.

Tatsächlich aber sind mit C++ 11/14 alle Dinge, bei denen irgendwie "new" drin vorkommt, suspekt, weil die ganze Speicherorganisation von Hand schnell mal schief geht. Für solche Dinge gibt es std::shared_ptr und/oder std::unique_ptr.

In diesem Fall dürfte aber, wie Landa schon gesagt hat, ein std::vector<std::string>, der als const std::vector<std::string>& an den Konstruktor übergeben wird, geeigneter sein. Vor allem musst du dich nicht ums Aufräumen kümmern.
 

Neue Beiträge

Zurück