c – 错误信息:’jj’的名称查找已更改为ISO’for’范围,(如果使用’-fpermissive’G将接受您的代码)

错误是:
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++);

现在正在工作!我不明白原因.

解决方法

在内部for语句的末尾有一个分号.这样就结束了jj的范围,所以它在块内是不可见的.

编辑
你已经解决了范围问题,但仍然有你的for循环执行

<nothing>;

括号后删除分号!

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...