当前位置:   article > 正文

C++中auto关键字的使用及编译错误解决_c++ auto 编译错误

c++ auto 编译错误


auto可以自动帮我们推断变量的类型
比如在定义一些难以确定的变量类型时
 35     func_log(__func__, "");
 36     // vector<Student>::iterator it = Students.begin();
 37     for (auto it = Students.begin(); it != Students.end(); it++)
 38     {
 39         if (id == it->id)
 40         {
 41             cout << "remove: " << id << endl;
 42             Students.erase(it);
 43             break;
 44         }
 45     }
 
但是如果直接使用g++命令编译会报错
大概如下

vector.cpp: In function ‘void remove(int)’:
vector.cpp:37:12: error: ‘it’ does not name a type
vector.cpp:37:35: error: expected ‘;’ before ‘it’
vector.cpp:37:35: error: ‘it’ was not declared in this scope

默认把auto当作声明自动声明周期的关键字(C++98标准),而不是自动类型的关键字;
在C++11标准中auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型

因此如果要解决此问题需要在编译时添加-std=c++11的编译选项;
g++ -std=c++11 vector.cpp -o vector
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/888738
推荐阅读
相关标签
  

闽ICP备14008679号