2016-07-26 8 views
-2

Ich versuche, einen Verweis auf eine Liste von Ints zu deklarieren. Wenn ich kompiliere, erhalte ich einen expected '(' for function-style cast or type construction Fehler für list<int>& current;, wo ich eine Referenz erkläre. Was ist das Problem hier? Ich habe überall nachgesehen und das scheint so zu sein, wie eine Referenz initialisiert wird. Es muss etwas geben, das ich vermisst habe, da es nicht kompiliert wird.Fehler beim Initialisieren einer Referenz erhalten

#include <iostream> 
#include <vector> 
#include <list> 

using namespace std; 

int main() { 
    list<int> list; 
    list<int>& current; 
    current = list; // or just list<int>& current = list; both error 
} 
+0

Referenz ein anderer Name des Objekts ist, so dass alle Referenzen initilized werden müssen, können Sie nicht einfach schreiben: & r; int Sie sollten d int schreiben; int & r = d; – AnatolyS

Antwort

1

So initialisieren Sie eine Referenz nicht. Verwenden Sie:

list ist eine schlechte Wahl des Variablennamens.

  1. list<int> list; 
    

    Verwendung in Compiler-Fehler führen, da Sie haben:

    using namespace std; 
    
  2. list schreckliche Variablenname sein, auch wenn Sie nicht

    benutzt hatte
    using namespace std; 
    

Ich empfehle, die using namespace std; Zeile zu entfernen und einen anderen Namen für die Variable zu verwenden.

std::list<int> my_list; 
std::list<int>& current = my_list; 
+0

Sind Sie sicher, dass dies funktioniert, wenn der Name "list" als Objekt neu definiert wird? –

+0

@ Cheersandthth.-Alf, Nein, ich denke nicht, dass es wird. –

+0

also, wenn ich 'list & current = list;' hatte, war es tatsächlich, weil 'list' wurde nicht die' liste 'ich gerade erstellt, aber die Funktion? Versuche es jetzt einfach, und es scheint, wenn ich einen anderen Variablennamen verwende, funktioniert es. Das war das Problem. Vielen Dank! –