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
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值