【发布时间】:2011-07-02 10:27:17
【问题描述】:
错误是:
In function ‘int returnShortestWeightedBranch(std::vector<route, std::allocator<route> >*)’:
error: name lookup of ‘jj’ changed for ISO ‘for’ scoping
note: (if you use ‘-fpermissive’ G++ will accept your code)
代码是:
for (int i = 0; i< routeVector.size(); i++)
{
if (routeVector[i].exitPoint == exitPointDetailsVector[preserveL].exitPoint)
{
cout << "\n-----------parent: " << routeVector[i].exitPoint;
branch obj;
obj.connectedExitPoint = exitPointDetailsVector[preserveI].exitPoint;
routeVector[i].selectedBranchesVector.push_back (obj);
for (int jj = 0; jj < routeVector[i].selectedBranchesVector.size(); jj++);
{
cout << "\n-----------branch: " << routeVector[i].selectedBranchesVector[jj].connectedExitPoint;
}
}
}
这可能是什么问题?
编辑 1:
我更改了以下内容:
for (int jj = 0; jj < routeVector[i].selectedBranchesVector.size(); jj++);
到:
int jj;
for (jj = 0; jj < routeVector[i].selectedBranchesVector.size(); jj++);
现在它正在工作!我不明白其中的原因。
【问题讨论】:
-
不,它不起作用。
{}部分的代码只执行一次。 -
顺便说一句,错误消息反映了曾几何时,早期的 C++ 允许在循环之后使用 for 循环中定义的变量。此规则在 ISO 标准制定过程中有所更改。
标签: c++ compiler-errors