Wie initialisiert man die Referenzelementvariable einer Klasse?

7

Betrachten Sie den folgenden Code C ++:

%Vor%

Es zeigt den folgenden Fehler bei der Verwendung von GCC-Compiler

%Vor%

Warum ruft der Compiler den Konstruktor nicht direkt auf?

    
banarun 14.03.2013, 07:51
quelle

2 Antworten

18

Das liegt daran, dass Referenzen nur in der Initialisierungsliste initialisiert werden können. Verwenden Sie

%Vor%

Zur Erklärung: Die Referenz kann nur einmal gesetzt werden, der Ort, an dem dies geschieht, ist die Initialisierungsliste. Danach können Sie die Referenz nicht festlegen, sondern der referenzierten Instanz nur Werte zuweisen. Ihr Code bedeutet, dass Sie versucht haben, einer referenzierten Instanz etwas zuzuweisen, aber die Referenz wurde nie initialisiert. Daher referenziert sie keine Instanz von int und Sie erhalten den Fehler.

    
Daniel Frey 14.03.2013, 07:53
quelle
2

Mein Compiler gibt diesen Fehler aus:

  

Fehler C2758: 'Test :: t': muss in der Konstruktorbasis / Elementinitialisierungsliste

initialisiert werden

Und genau das müssen Sie tun. Referenzen müssen in der Initialisierungsliste initialisiert werden:

%Vor%

Erläuterung:

Wenn der Verweis nicht in der intitiliazer-Liste enthalten ist, ist es für den Compiler fast unmöglich festzustellen, ob der Verweis initialisiert ist. Referenzen müssen initialisiert werden. Stellen Sie sich dieses Szenario vor:

%Vor%

Nun wäre es Sache des Aufrufers des Konstruktors zu entscheiden, ob ein gültiger Code generiert wurde. Das kann nicht sein. Der Compiler muss sicherstellen, dass der Verweis zum Zeitpunkt der Kompilierung initialisiert wird.

    
nvoigt 14.03.2013 07:56
quelle

Tags und Links