Referenz im Konstruktor C ++ initialisieren
Ich glaube nicht, dass ist eine doppelte Frage. Es gibt ähnliche, aber Sie sind nicht mir geholfen mein problem zu lösen.
Laut diese ist, gilt Folgendes in C++:
class c {
public:
int& i;
};
Jedoch, wenn ich dies mache, bekomme ich die folgende Fehlermeldung:
error: uninitialized reference member 'c::i'
Wie kann ich die Initialisierung erfolgreich zu tun i=0
auf dem Bau?
Vielen Dank.
InformationsquelleAutor der Frage ale | 2011-07-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine solche Sache wie eine "leere Referenz". Sie habenum eine Referenz auf Objekt-Initialisierung. Setzen Sie im Konstruktor der Basis-Initialisierungsliste:
Wäre eine alternative
i(*new int)
aber das wäre schrecklich.Edit:Um vielleicht deine Frage zu beantworten, werden Sie wahrscheinlich wollen einfach nur
i
Mitglied sein Objekt, nicht eine Referenz, so sagen Sie einfachint i;
und schreiben Sie den Konstruktor entweder alsc() : i(0) {}
oder alsc(int a = 0) : i(a) { }
.InformationsquelleAutor der Antwort Kerrek SB
InformationsquelleAutor der Antwort Igor Oks
Abgesehen von der süßen syntax, ein Hauptmerkmal von Referenzen ist, dass Sie sind ziemlich sicher, dass es immer auf einen Wert (Nicht NULL-Wert).
Bei der Konzeption einer API, es zwingt Benutzer nicht senden Sie NULL.
Beim Verzehr eine API, wissen Sie ohne das Lesen der doc, die NULL ist keine option hier.
InformationsquelleAutor der Antwort fulmicoton
Referenzen müssen initialisiert werden, bei der Erstellung. So haben Sie nur initialisieren, wenn die Klasse erstellt wird. Auch müssen Sie einige rechtliche Objekt zu verweisen.
Müssen Sie die Initialisierung in den Konstruktor:
InformationsquelleAutor der Antwort Constantinius
Referenz sollte initialisiert werden, entweder durch die Weitergabe der Daten an den Konstruktor oder Speicher von heap-wenn Sie möchten, initialisieren Sie in der default-Konstruktor.
Dank
InformationsquelleAutor der Antwort G.S. Janjua
InformationsquelleAutor der Antwort Tobin K Tomy Karukulathel