Ich versuche, ein dynamisches String-Array in der folgenden Art und Weise zu verteilen und ich erhalte eine Fehlermeldung:Dynamische String-Array Zuordnungsfehler
struct Test
{
std::string producer[];
std::string golden[];
};
Test test1 =
{
{"producer1", "producer2"} ,
{"golden1" , "golden2"}
};
Der Fehler i bekommen, dass es zu viele Initialisierer für std::string[0]
, aber wenn ich aus dem Array-Teil aussteige funktioniert es:
struct Test
{
std::string producer;
std::string golden;
};
Test test1 =
{
"producer1" ,
"golden1"
};
Vielen Dank im Voraus!
'std :: string Hersteller [];' Sie können nicht Deklarieren Sie ein Array, ohne zu sagen, wie viele Elemente enthalten sein sollen. –
@Bo Sie können, aber Sie können es nicht definieren, Sie müssen es dynamisch tun. – littleadv
@littleadv Ja, aber eine nicht statische Elementdeklaration ist eine Definition und erfordert die Größe. Und Sie können kein Ding, das deklariert wurde, dynamisch zuweisen. Um eine 'string []' dynamisch zuzuweisen, müssten Sie das Objekt als 'string *', nicht als 'string []' definieren. Die einzigen Stellen, an denen und tatsächlich 'string []' zulässig wäre, ist ein 'extern'- oder ein Referenzparameter für eine Funktion (aber das ist ein bisschen schwierig, da man die Funktion dann nicht an ein Array übergeben kann, dessen Größe bekannt ist). . –