未初始化的局部变量 "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 整个代码。