C++ shadows a parameter? [hjälp]

Permalänk
Medlem

C++ shadows a parameter? [hjälp]

Hej, jag håller då på att lära mig c++ har läst om det ett litet tag nu bara kanske 4 veckor. Så jag tänkte bara för skoj skull göra ett simpelt, text-baserat spel. Men jag har fått en error som jag inte förstår mig på riktigt vad den menar med det. Den säger "declaration of 'std::string nickname' shadows a parameter." Kan någon förklara för mig vad den menar? Här är en liten bit av menyn till spelet, jag vet om att där är fel lite här och var i min kod, men jag har inte kommit så långt så jag har fixat allt än Det mesta vet jag hur jag ska fixa och lite tänkande är inte fel, då man lär sig oftast då. Men jag har tänkt här och fattar inte så. Tack för hjälp på förhand! (Är hyfsat osäker på det här med att skicka variabler mellan funktioner så det kan vara fel (a))

// Inkluderar olika bibliotek som vi kommer ha användning av i spelet. #include <cstdlib> #include <iostream> #include "stdlib.h" #include <string> // Förklarar att vi kommer använda oss utan namespace std. using namespace std; // Förklarar för kompilatorn att vi kommer använda en funktion vid namn "play" senare i koden. // Skickar med oss en variabel till play funktionen från main. void play(string& nickname); // Main funktionen // Skickar med oss en variabel till play funktionen från main. int main(string& nickname) { // Main funktionens variabler. int choice; string back = ""; string nickname; int goplay; system ("TITLE TROKELE"); system ("COLOR 0A"); // Menyn och menyloopen. while (1) { system ("CLS"); cout << "1. Play" << endl; cout << "2. Instructions" << endl; cout << "3. About" << endl; cout << "4. Exit" << endl << endl; cin >> choice; switch (choice) { // Default case ifall inkorrekt siffra trycks in i menyn. default: { if (choice != 1,2,3,4) system ("CLS"); cout << "Error, " << choice << " is not a valid response." << endl; cin >> back; break; } // Spela spelet. Går vidare till spel funktionen. case 1: { cout << "Please choose a name: " << endl; cin >> nickname; cout << "\nYou choose: " << nickname << "as name." << endl; cout << "Are you ready to fight?"; cout << "If so then press 1"; cin >> goplay; if (goplay == 1) { // Skickar spelaren till spelet. // Skickar med oss en variabel till play funktionen från main. play(string& nickname); } else { cout << "Write something to get to menu."; cin >> back; } break; } // Instruktioner för spelet. case 2: { system ("CLS"); cout << "UP = U" << endl << endl; cout << "DOWN = J" << endl << endl; cout << "LEFT = H" << endl << endl; cout << "RIGHT = K" << endl << endl; cout << "Write anything for menu" << endl << endl; cin >> back; break; } // Om spelet. case 3: { system ("CLS"); cout << "This game is made by Fredrik 'GHARN' Dahl" << endl; cout << "Version 1.0" << endl; cout << "Write anything for menu" << endl; cin >> back; break; } // Avsluta spelet. case 4: { exit(0); return 0; } } } }

Dold text
Permalänk
Medlem

Du kan inte ta in en parameter till main() som du kallar för nickname och sen skapa en ny med samma namn.

Visa signatur

Citera för svar

MSI Z490 MAG TOMAHAWK | Intel Core i7 10700K | Corsair 64GB DDR4 3200MHz | Asus GeForce RTX 3060 Ti TUF Gaming OC | Samsung 970 EVO Plus 1TB | WD Black 6TB Desktop Drive | Corsair RM750X 750W | Fractal Design Define R6

Permalänk
Medlem
Skrivet av Dew87:

Du kan inte ta in en parameter till main() som du kallar för nickname och sen skapa en ny med samma namn.

Oj, nu såg jag vad jag hade gjort fel Tack för hjälpen!