Linken und Rechten Operanden des Komma-operator hat keine Auswirkungen (Warnung)
Ich bin immer eine Warnung in meinem Konstruktor in meiner Klasse, und ich es noch nie zuvor gesehen. Dies ist, was mein Konstruktor sieht wie.
Account(std::string n = "NULL", std::string i = "0", Stats s = (0,0,1) )
: name(n), id(i), stat(s) {}
Wenn ich entfernen Sie alle diese Kommas ergibt es einen compile-Fehler, nicht?
Ist diese Warnung falsch ist, oder gibt es etwas, was ich ändern kann um es zu beheben?
Ich könnte helfen, wenn du wirklich kopieren die Warnung.
Ich habe die Warnung in den Titel, weglassen [-Wunused-Wert]
Ich habe die Warnung in den Titel, weglassen [-Wunused-Wert]
InformationsquelleAutor Shilaly | 2014-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem ist dieses:
(0,0,1)
.Ist, dass Klammern um den Ausdruck
0,0,1
, die ausgewertet1
. (Der Komma-operator ist ein infix-operator, wertet den ersten und zweiten Ausdruck aus und gibt das zweite. In diesem Fall haben Sie zwei solche Operatoren.)Ich weiß nicht, was Sie hier wollte, aber ich vermute, dass ist es nicht.
EDIT: Es scheint, Sie wollen
Stats s(0,0,1)
.Das ist genau das, was ich vergessen habe, danke.
Nicht
Stats s(0,0,1)
besser? Es scheint, dass Sie nicht brauchen, um hierher kopierendu bist korrekt; Feste.
InformationsquelleAutor Paul Draper
Das problem ist wahrscheinlich, dass ein Teil
Stats s = (0,0,1)
. C++ sieht dies als eine Folge von Ausdruck berechnet werden, während nur der Letzte Wert. Es gibt 1. Du meinst wohldie funktioniert, wenn Ihre stats Struktur haben wie einen Konstruktor. Beachten Sie, dass in C++11 haben Sie diese kürzere syntax:
Nein, das ist falsch. Es war richtig, in einigen Kontexten (nicht in diesem), vor C++11.
Vielen Dank für die Erklärung. Vielleicht ist es legitim, auch in älteren Versionen, die ich einfach nie Probleme.
Pre-C++11, es hängt davon ab, ob
Stats
ist ein Aggregat.Ja, die Klammern loszuwerden, diese Warnung. Aber Sie wird nicht funktionieren, wenn mit Hilfe von pre-c++11.
InformationsquelleAutor hivert
Ich denke, was du suchst, ist die Angabe einer default-Wert Funktion argument, das ist ein struct, und ich denke, es wurde hier diskutiert Wie kann ich einen Standardwert zuweisen einer Struktur in eine C++ - Funktion?
InformationsquelleAutor Engin Kayraklioglu