2016-10-16 3 views
-3

Ich bekomme diesen Fehler in meinem Code, nicht initialisierte lokale Variable "Name" verwendet. Ich habe eine Variable wie dieseNicht initialisierte lokale Variable "name" Verwendet

int name = 0;

dann später im Code,

int name = name + 1;

Ich versuche Namen auf 0 setzen dann später 1 hinzufügen, um es dann an den Anfang zurückgehen und noch habe es gleich name + 1. das problem ist es setzt es wieder auf 0.

Um es einfacher zu machen hier ist der Teil, über den ich spreche.

int main() 
{ 
    int w = 0; 
    int choice; 

    cout << "1: Register\n2: Login\nYour Choice:"; cin >> choice; 

    if (choice == 1) 
    { 
     string username, password; 
     cout << "Select A Username: "; cin >> username; 
     cout << "Select A Password: "; cin >> password; 

     ofstream file; 
     file.open("data\\" + username + ".txt"); 
     file << username << endl << password; 
     file.close(); 

     main(); 
    } 
    else if (choice == 2) 
    { 
     bool status = IsLoggedIn(); 

     if (!status) 
     { 
      int w = w + 1; 
      cout << "Unsuccesfull Login!" << endl; 
      system("PAUSE"); 

      if (w == 3) 
      { 
       return 0; 
      } 
      else if (w == 2) 
      { 
       main(); 
      } 
      else if (w == 1) 
      { 
       main(); 
      } 
      else if (w == 0) 
      { 
       main(); 
      } 
     } 
     else 
     { 
      cout << "Succesfully Logged In!" << endl; 
      system("PAUSE"); 
      return true; 
     } 
    } 
}` 
+0

Nun, Sie versuchen, die gleiche Variable zweimal neu zu deklarieren, da Sie den Typ beide Male einschließen. Es gibt Ihnen nicht den Fehler, den ich erwarten würde, aber ich würde einen Fehler davon erwarten. – Carcigenicate

+0

Ich bin überzeugt, dass beide Deklarationen in einem anderen Bereich sind. Der Code kann nicht mit der Fehlermeldung 'error: redeclaration of' int name '' kompiliert werden. –

+0

@AlBundy der Fehler ist klar genug und es bedeutet, dass die Variable zweimal im selben Umfang deklariert wird. Wenn sie nicht den vollen Code posten, glaube ich nicht, dass wir mehr helfen können. – peval27

Antwort

0

C++ beschwert sich, wenn Sie versuchen, zwei Variablen mit demselben zu erklären Name im selben Umfang.

Grundsätzlich int name; erstellt den Variablennamen. Sie können es dann durch name ohne int adressieren.

Wahrscheinlich meinen Sie int name = 0; [...] name = name + 1;.

+0

Dies stoppte den Fehler, aber jetzt brauche ich es bei name + 1 zu bleiben, wenn ich zurück zu int main() gehe – ActiveGaming

+0

@ActiveGaming Ich kann keinen Namen in Ihrem Programm tatsächlich finden. –

+0

Ich habe den Namen statt der eigentlichen Ganzzahl verwendet – ActiveGaming

0

Sie deklarieren die Variable zweimal. Ich würde vorschlagen:

int name = 0; 

dann später im Code,

name++; 

Sie können auch verwenden: ++name; oder name += 1

+0

Ich bin davon überzeugt, dass das nicht stimmt! Der C++ - Compiler beschwert sich, wenn dieselbe Variable im selben Bereich erneut deklariert wird. –

+0

'int name;' ist eine Deklaration einer Variablen. 'int name = 0' ist Deklaration und Initialisierung. 'name ++' ist eine Zuweisung, so dass der Wert der Variablen name um 1 inkrementiert wird. – peval27

+0

Lies was ich geschrieben habe. Ihre Antwort löst das OP-Problem nicht, weil 'name' in zwei verschiedenen Bereichen deklariert ist! –

2

Da Sie die name Variable name nicht erneut deklarieren, scheint es, als ob Sie Ihre int name = name + 1; irgendwo im Code verwenden, wenn sie die erste Deklaration nicht sehen. Hier ist das Problem, dass int name = name + 1; zweiter "Name" nicht vorher deklariert ist und Sie versuchen, Ihren ersten "Namen" damit zu initialisieren. Von Anfang an ist ein schlechter Ansatz, aber hier ist das Problem, dass, wenn Sie int name = name + 1; deklarieren es nicht im Rahmen von int name = 0 ist.

Also zuerst sicher sein, Sie sind Erhöhen Sie Ihre name in einem Ort, wo der Compiler die Deklaration von int name = 0 „sieht“ und in int name = name + 1; des Typs

+1

Sie sind der Erste, der es bekommen hat! Oben! –

0

Der Fehler Sie sieht aus wie eine Warnung mehr bekommen loszuwerden. Es scheint immer noch, dass Sie die gleiche Variable zweimal im selben Umfang deklariert haben und in diesem Fall würde der Fehler in etwa so aussehen: Deklaration der Variablen "name" vom Typ int.

Vielleicht haben Sie "name" wieder in einem anderen Bereich deklariert und versuchen, den ersten aus einem anderen Bereich zu bekommen, was ohne Zeiger oder Refrescen unmöglich ist. Ich rate nur, weil du den ganzen Code nicht gepostet hast.

Verwandte Themen