读书人

不可以这样使用吗?该如何解决

发布时间: 2012-04-27 11:57:44 作者: rapoo

不可以这样使用吗??
为什么编译通不过呀!
#include <iostream>
#include <vector>

using namespace std;

int main(){
vector<int> ivec(10,1);
if( !ivec.empty() ){
vector<int>::reference rval = *ivec.begin();
vector<int>::reference rval2 = ivec.front();
vector<int>::reference rval3 = ivec[0];
}
cout << " rval: " << rval << endl;
cout << "rval2: " << rval2 << endl;
cout << "rval3: " << rval3 << endl;

system("pause");
return 0;
}

错误:13 rval' undeclared (first use this function)
14 rval2' undeclared (first use this function)
15 rval3' undeclared (first use this function)
这是什么原因????????????

[解决办法]
if( !ivec.empty() ){
vector<int>::reference rval = *ivec.begin();
vector<int>::reference rval2 = ivec.front();
vector<int>::reference rval3 = ivec[0];
}
cout << " rval: " << rval << endl;
cout << "rval2: " << rval2 << endl;
cout << "rval3: " << rval3 << endl;

rval,rval2,rval3的生命在 if的 {}里面已经结束.
在作用域外面,没有 rval等几个的声明定义.
[解决办法]
你把这三句放到if语句里,不就可以了吗,局部变量的问题
cout << " rval: " << rval << endl;
cout << "rval2: " << rval2 << endl;
cout << "rval3: " << rval3 << endl;

读书人网 >C++

热点推荐