首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-04-27 
不可以这样使用吗??为什么编译通不过呀!#include iostream#include vectorusing namespace stdint ma

不可以这样使用吗??
为什么编译通不过呀!
#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;

热点排行