在测试的主文件中,我以类似于此的代码开始。错误:变量未在此范围内声明
//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;
}
它继续这样到其他两个else if语句分别声明float和double(使用相同的变量名)。然而,编译停止并且说k1,k2,MyVector和NewVector没有在此范围内进一步声明为该程序。我在main的“全局”部分声明了它,所以我并不真正理解为什么声明没有发生。是否可以尝试在if/else if语句中声明不同类型的相同变量?
我试图这样做,以避免在输入循环内进行额外的测试,这种方式有一个数据类型检查,正确的数据类型定义和代码会比它会更短。有什么想法发生了什么?
编辑:代码添加。
这可能是由于先前的解析错误。你仔细检查过吗?评论部分的代码。 –
变量只存在于“if”语句的范围内,因为这是您声明它们的地方。 – acraig5075
请提供[MCVE](http://stackoverflow.com/help/mcve),因为这里的细节很重要。狂猜:C++中的变量只在最接近的范围内“可见”,即在你的代码段中,在相应的“if”分支之外,任何变量都不可见。 – yeputons