【发布时间】:2014-02-10 19:22:55
【问题描述】:
我试图在 C++11 中创建一个基于范围的 lopp:
std::vector<Satellite> Satellites; // Class member
//...
int number = 1;
for(auto sat : this->Satellites) {
sat.setNumber(number++);
}
我收到了这个警告:
'auto' 在 C++11 中改变含义;请删除它[-Wc++0x-compat]
当然我可以坚持使用for(Satellite sat : this->Satellites),但我正在尝试测试 auto 关键字。
我曾读过 C++11 可以使用 auto,但 recently I found 自 C++0x 以来它发生了变化(或者看起来确实如此!):
关键字 auto 并不新鲜;它实际上可以追溯到 ANSI C 之前的时代。 但是,C++11 改变了它的含义; auto 不再指定一个 具有自动存储类型的对象。相反,它声明了一个对象 其类型可从其初始化程序中推导出来。汽车的旧含义 已从 C++11 中删除以避免混淆。
那么:我能否像这样在 C++11 中使用它,而我的问题出在 IDE(Eclipse CDT Juno)上,还是应该以不同的方式使用它(或完全删除 auto 关键字)?
【问题讨论】: