C++的高手们,麻烦帮忙啊~~
刚开始学c++,在essential C++第2章的习题中,发现原答案不能编译,原代码是这样:
#include<vector>
#include<string>
#include<iostream>
using namespace std;
bool calc_elements(vector<int> &vec,int pos);
void display_elems(vector<int> &vec,const string &title,ostream &os=cout);
int main()
{
vector<int> pent;
const string title("pentagonal numeric series");
if(calc_elements(pent,0))
display_elems(pent,title);
if(calc_elements(pent,8))
display_elems(pent,title);
if(calc_elements(pent,14))
display_elems(pent,title);
if(calc_elements(pent,138))
display_elems(pent,title);
}
bool calc_element(vector<int> &vec,int pos)
{
if(pos<=0 || pos>64)
{
cerr<<"sorry. invalid position:"<<pos<<endl;
return false;
}
for(int ix=vec.size()+1;ix<=pos;++ix)
vec.push_back((ix*(3*ix-1))/2);
return true;
}
void display_elems(vector<int> &vec,const string &title,ostream &os)
{
os<<'\n'<<title<<"\n\t";
for(int ix=0;ix<vec.size();++ix)
os<<vec[ix]<<' ';
os<<endl;
}
错误是这样的: