我正在尝试编译下面的两个文件,但从编译器收到错误消息:gcc 4.3.3 (Linux)
错误位于带有以下符号的行:LINE WITH ERROR
我做错了什么,我该怎么改变?
路易斯
......................................
$ g++ -c b.h b.cpp
b.cpp: In function 'void calcularDesempPop(std::vector<Individuo, std::allocator<Individuo> >&)':
b.cpp:19: error: name lookup of 'iter' changed for new ISO 'for' scoping
b.cpp:17: error: using obsolete binding at 'iter'
......................................
文件:b.cpp
#include <iostream>
#include <algorithm>
#include "desempenho.h"
using std::cout;
using std::endl;
struct Individuo {
vector<double> vec;
double desempenho;
};
void calcularDesempPop(vector<Individuo>& pop) {
for (vector<Individuo>::iterator iter = pop.begin();
iter != pop.end(); ++iter);//LINE WITH ERROR
iter->desempenho = calcularDesempenho(iter->vec);
cout << endl;
}
......................................
文件:b.h
#ifndef GUARD_populacao_h
#define GUARD_populacao_h
//#include <algorithm>
#include <iostream>
#include "cromossoma.h"
struct Individuo {
vector<double> vec;
double desempenho;
};
void calcularDesempPop(vector<Individuo>& pop);
#endif
$6.5.3/3 - “如果 for-init-语句
是一个声明,其范围
声明的名称延伸到末尾
for 语句。”
因此 iter 不能在 for 循环范围之外访问。检查 for 循环后面的分号。很可能你并没有那么想。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)