Как решить необъявленную переменную в случае ниже - PullRequest
0 голосов
/ 05 февраля 2020

Я новичок в C ++ и хочу спросить об этой конкретной c ошибке. Я не знаю, почему всегда кажется, что я не объявлял переменную, где на самом деле я сделал (см. Мой код ниже).

Ответы [ 3 ]

0 голосов
/ 05 февраля 2020

Проблема в объявлении массива, оно объявлено внутри области видимости:

#include <iostream>

using namespace std;

int main()
{
    int a = 2; // local variable

    if (true)
    {
        int a = 4; // local if statement variable
        cout << a << endl; // here the output will be 4
    }
    cout << a << endl; // here the output will be 2, also here 'a' from the if statement, does not longer exist, when the if statement is ended all the variables declared inside will be deleted

    return 0;
}

Вы также можете создать свою собственную область без выражения 'if':

int a = 2; // local variable

{
    int a = 4; // local scope statement variable
    cout << a << endl; // here the output will be 4
}
cout << a << endl; // here the output will be 2, also 'a' from the previous scope does not exist
0 голосов
/ 05 февраля 2020

Вот полезная ссылка , чтобы узнать о локальных переменных и области действия.

Ваша конкретная проблема заключается в том, что ваша переменная decoder является локальной для области действия блока (вы объявили ее в if), и вы пытаетесь использовать его вне этой области. Однако после выхода из области видимости все переменные, локальные для этой области.

if (number = 987)
{
    int decoder[3] = {0, 1, 2};
} // and here decoder is destroyed

Вы можете объявить decoder вне блока и определить его внутри блока:

int decoder[3];
if (number = 987)
{
    // populate decoder
}
// decoder still exists
0 голосов
/ 05 февраля 2020

В обоих случаях вы инициировали массив декодеров в операторе if. Таким образом, компилятор не знает этого вне if. Напишите переменную перед вашим первым оператором if-else и, если необходимо, измените ее в операторе if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...