Ich verdiene immer noch meine C++ - Flügel; Meine Frage ist, wenn ich eine Struktur wie so haben:C++ initialisiert anonyme Struktur
struct Height
{
int feet;
int inches;
};
Und ich habe dann ein paar Zeilen wie folgt:
Height h = {5, 7};
Person p("John Doe", 42, "Blonde", "Blue", h);
Ich mag die Initialisierung von Strukturen über geschweifte Klammern, aber ich würde es vorziehen, die oben in einer Zeile, in einer anonymen Height-Struktur. Wie mache ich das? Mein erster naiver Ansatz war:
Person p("John Doe", 42, "Blonde", "Blue", Height{5,7});
Dies allerdings nicht funktionierte. Bin ich sehr weit daneben?
Dies ist nur ein Beispiel sein kann, aber, ist es wahrscheinlich besser, die 'Height' als einzelnes' inches' Feld zu speichern. Wenn du Füße brauchst, kannst du das in Füße umwandeln; es ist einfach viel einfacher, mit einer einzelnen Einheit umzugehen, als mit mehreren Einheiten zu jonglieren, besonders da es jetzt mehrere Werte geben kann, die gleich sind, aber nicht die gleiche Darstellung haben (zB '{2, 3}' und '{ 1, 15} '). –
C++ 1x kommt mit [uniform initialization syntax] (http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization), die so etwas unterstützen würde. Es ist sehr wahrscheinlich, dass Ihr Compiler dies bereits unterstützt. – sbi
Geben Sie anstelle von 'Height {5,7}' im Person-Konstruktor '(struct Height) {5,7} 'an (wenn Sie als Referenz übergeben werden) (oder' & (struct Height) {5,7} 'wenn Sie einen Zeiger übergeben. Sie übertragen die Initialisierungsliste im Grunde auf den gewünschten Typ. Es ist eine C99 + -Funktion, sollte aber auch mit C++ nutzbar sein. – Erhhung