В основном файле для тестирования я начал с кода, подобного этому.Ошибка: переменная Не объявлена в этой области
//Initialize the data type for the vectors and input variables
if (choice == 1)
{
vector<int>MyVector{};
vector<int>NewVect{};
int k1{}, k2{};
}
else if (choice == 2)
{
vector<float>MyVector{};
vector<float>NewVect{};
float k1{}, k2{};
}
//Exact Same block for double
while (true)
{
cout<<": ";
cin>>k1>>k2;
if ((k1 == 0) && (k2 == 0)) break;
else
{
MyVector.push_back(k1);
MyVector.push_back(k2);
continue;
}
}
//Insert Sort Algorithm test, Imported from class InsertSort.
//NewVector = sort.sort(MyVector)
return 0;
}
Он по-прежнему, как это в двух других еще, если заявления об объявлении поплавок и двойной соответственно (используя те же имена переменных). Однако компиляция останавливается и говорит, что k1, k2, MyVector и NewVector не были объявлены в этой области дальше в программу. Я объявил это в «глобальной» части основного, поэтому я не понимаю, почему декларация не происходит. Невозможно попытаться объявить одну и ту же переменную другого типа внутри if/else if statement?
Я пытаюсь сделать это таким образом, чтобы избежать дополнительных тестов во входном цикле, таким образом, существует одна проверка для типа данных, определены правильные типы данных, а код будет короче, чем это было бы , Любые идеи, что происходит?
EDIT: Code Added.
Это может быть из-за предыдущую ошибку синтаксического анализа. Вы внимательно проверили? Комментируйте часть кода. –
Переменные существуют только в пределах выражения 'if', потому что именно там вы их объявили. – acraig5075
Пожалуйста, предоставьте [MCVE] (http://stackoverflow.com/help/mcve), потому что подробности здесь. Дикая догадка: переменные в C++ «видны» только в ближайшей области, т. Е. В вашем фрагменте ни одна из переменных не будет видна вне соответствующей ветви 'if'. – yeputons