Почему происходит ошибка компилятора?

86
16 февраля 2021, 18:00

Вылазит MSB6006 " read access violation. **IsRegistered** was nullptr VS 2019.

#include <iostream>
#include <future>
#include <vector>
bool* CheckRegistration(int RegNumber)
{
    return false;
}
int main()
{
    int RegNumber = 0;
    bool* IsRegistered = new bool;
    *IsRegistered = false;
    if (*IsRegistered) {
        int is_Reg = 1; //registered
    }
    else {
        IsRegistered = CheckRegistration(RegNumber);
        //exit(0);
    }
    if (*IsRegistered) {
        int is_Reg = 1; //registered
    }
    else {
        //exit(0);
    }
    std::cout << "Hello World!\n";
}
Answer 1
#include <iostream>
#include <future>
#include <vector>
//почему указатель?
bool CheckRegistration(int RegNumber)
{
    return false;
}
int main()
{
    int RegNumber = 0; //!!! переменные надо инициализировать
    bool IsRegistered = false;
    if (!IsRegistered) {//тут вообще было взятие адреса у указателя
        IsRegistered = CheckRegistration(RegNumber);
    }
    else {
        //exit(0);
    }
    std::cout << "Hello World!\n";
    //память кстати не почистили. new bool сделали, а delete нет
}

С указателями у Вас явно не всё в порядке.

#include <iostream>
#include <future>
#include <vector>
void CheckRegistration(int RegNumber, bool* b)
{
    *b = false;
}
int main()
{
    int RegNumber = 0; //!!! переменные надо инициализировать
    bool* IsRegistered = new bool;
    *IsRegistered = true;
    CheckRegistration(RegNumber, IsRegistered);
    if (!(*IsRegistered)) {
        std::cout << "Hello World!\n";
    }
    delete IsRegistered;
}
Answer 2

Результат функции должен зависить от аргумента, поэтому лучше, например так:

bool CheckRegistration(int RegNumber)
{
    return RegNumber % 2; //использовать все аргументы
}
//читайте выше мой комментарий    
int main()
{
    int RegNumber = 0;//!!! обьекты надо инициализировать             
    if (!CheckRegistration(RegNumber)) 
       std::cout << "Hello World!\n";    
    //избавимся от лишных строк
}

p.s. C++ это язык для обьектно ориентированного программирования, поэтому имейте привычку видеть обьекты, а не переменные

READ ALSO
Задержка в конце нескольких действий

Задержка в конце нескольких действий

Всем приветВ одной функции есть два действия

79
Как сделать так чтобы кнопка не оставляла отступов. Верстка

Как сделать так чтобы кнопка не оставляла отступов. Верстка

Учусь делать адаптивную верстку с помощью сетки gridУ меня получилось то что я хотел, но в итоге происходит смещение кнопки внутри блока

117
Проблема с values Formik

Проблема с values Formik

En Версия данного вопроса - https://stackoverflowcom/q/56613496/9464680

97