我一直在我的代码,未初始化的本地变量" name"用过的。我设置了一个像这样的变量
int name = 0;
然后在代码中
int name = name + 1;
我正在尝试将名称设置为0然后再添加1然后返回到开头并且仍然等于名称+ 1.问题是它一直将其设置为0。
为了使这里更容易,我正在讨论的部分。
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 :(得分:2)
由于您没有收到重新声明变量name
的错误,因此当您看不到第一个声明时,您似乎在代码中的某处使用了int name = name + 1;
。这里的问题是int name = name + 1;
秒&#34; name&#34;以前没有声明,你试图初始化你的第一个名字&#34;用它。
从一开始就是一个糟糕的方法,但问题在于,当您声明int name = name + 1;
时,它不在int name = 0
的范围内。
首先要确保你在编译器&#34;看到&#34;的地方递增你的name
。声明int name = 0
并删除int name = name + 1;
答案 1 :(得分:0)
您要将变量声明两次。我建议:
int name = 0;
然后在代码中
name++;
您还可以使用:++name;
或name += 1
答案 2 :(得分:0)
当您尝试在同一范围内声明两个具有相同名称的变量时,C ++会抱怨。
基本上int name;
创建变量名称。然后,您可以name
在没有int
的情况下解决问题。
您可能意味着int name = 0; [...] name = name + 1;
。
答案 3 :(得分:0)
您获得的错误看起来更像是警告。 似乎你在相同的范围内两次声明了相同的变量,并且通常在这种情况下,错误将是这样的:重新声明类型为int的变量“name”。
也许你在另一个范围内再次声明了“name”,并试图从另一个范围中获取第一个,如果没有指针或参考,这是不可能的。这只是我猜测,因为你没有发布整个代码。