未初始化的局部变量 "name" 已使用
Uninitialized Local Variable "name" Used
我的代码中一直出现此错误,使用了未初始化的局部变量 "name"。我设置了这样的变量
int name = 0;
然后在代码中,
int name = name + 1;
我试图将 name 设置为 0,然后再将 1 添加到它,然后返回到开头,它仍然等于 name + 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;
}
}
}`
您声明变量两次。我建议:
int name = 0;
然后在代码中,
name++;
您还可以使用:++name;
或 name += 1
当您尝试在同一范围内声明两个具有相同名称的变量时,C++ 会报错。
基本上int name;
创建变量名。然后,您可以通过 name
而不是 int
.
来解决它
你的意思可能是int name = 0; [...] name = name + 1;
。
因为您没有收到重新声明变量 name
的错误,所以您似乎在代码中某处使用了 int name = name + 1;
,但它没有看到第一个声明。这里的问题是 int name = name + 1;
第二个 "name" 之前没有声明,你试图用它初始化你的第一个 "name" 。
从一开始是一个糟糕的方法,但这里的问题是当你声明 int name = name + 1;
时它不在 int name = 0
.
的范围内
所以首先要确保在编译器 "sees" 声明 int name = 0
的地方递增 name
并删除 int name = name + 1;
[ 中的类型=18=]
您收到的错误看起来更像是警告。
看起来你还是在同一个范围内声明了同一个变量两次,在这种情况下,错误通常是这样的:重新声明变量 "name" of type int.
也许您在另一个作用域中再次声明了 "name" 并试图从另一个作用域中获取第一个,如果没有指针或引用,这是不可能的。这只是我的猜测,因为你没有 post 整个代码。
我的代码中一直出现此错误,使用了未初始化的局部变量 "name"。我设置了这样的变量
int name = 0;
然后在代码中,
int name = name + 1;
我试图将 name 设置为 0,然后再将 1 添加到它,然后返回到开头,它仍然等于 name + 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;
}
}
}`
您声明变量两次。我建议:
int name = 0;
然后在代码中,
name++;
您还可以使用:++name;
或 name += 1
当您尝试在同一范围内声明两个具有相同名称的变量时,C++ 会报错。
基本上int name;
创建变量名。然后,您可以通过 name
而不是 int
.
你的意思可能是int name = 0; [...] name = name + 1;
。
因为您没有收到重新声明变量 name
的错误,所以您似乎在代码中某处使用了 int name = name + 1;
,但它没有看到第一个声明。这里的问题是 int name = name + 1;
第二个 "name" 之前没有声明,你试图用它初始化你的第一个 "name" 。
从一开始是一个糟糕的方法,但这里的问题是当你声明 int name = name + 1;
时它不在 int name = 0
.
所以首先要确保在编译器 "sees" 声明 int name = 0
的地方递增 name
并删除 int name = name + 1;
[ 中的类型=18=]
您收到的错误看起来更像是警告。 看起来你还是在同一个范围内声明了同一个变量两次,在这种情况下,错误通常是这样的:重新声明变量 "name" of type int.
也许您在另一个作用域中再次声明了 "name" 并试图从另一个作用域中获取第一个,如果没有指针或引用,这是不可能的。这只是我的猜测,因为你没有 post 整个代码。