用vector存储信息,编译时异常
#include
#include
using namespace std;
class xinxi
{
public:
void xingxi(const char* l,int a, double b,const char* c)
{
vector<const char*>a4;
a4.push_back(l);
vector<int>a1;
a1.push_back(a);
vector<double>a2;
a2.push_back(b);
vector<const char*>a3;
a3.push_back(c);
cout << "库存的水果信息如下:" << endl;
cout << a4.at(1) << " " << endl;
cout << a1.at(1) <<"kg"<< " " << endl;
cout << a2.at(1) << "元"<<" " << endl;
cout << a3.at(1) << " " << endl;
cout << a4.at(2) << " " << endl;
cout << a1.at(2) <<"kg"<< " " << endl;
cout << a2.at(2) << "元"<< " " << endl;
cout << a3.at(2) << " " << endl;
cout << a4.at(3) << " " << endl;
cout << a1.at(3) <<"kg"<< " " << endl;
cout << a2.at(3) << "元"<< " " << endl;
cout << a3.at(3) << " " << endl;
}
};
int main()
{
xinxi q;
q.xingxi("红美人", 100, 15.3, "象山");
q.xingxi("车厘子", 78, 48.8, "智利");
q.xingxi("香梨", 132, 7.8, "新疆");
return 0;
}
错误信息:错误信息:0x00007FFE5A5ACD29 处(位于 储存库存信息.exe 中)有未经处理的异常: Microsoft C++ 异常: std::out_of_range,位于内存位置 0x00000010D9DBF410 处。
帮你改了代码:
#include<iostream>
#include<vector>
using namespace std;
class xinxi
{
public:
vector<const char*> name;
vector<int> weight;
vector<double> price;
vector<const char*> origin;
void xingxi(const char* l,int a, double b,const char* c)
{
name.push_back(l);
weight.push_back(a);
price.push_back(b);
origin.push_back(c);
}
void print_info()
{
cout << "库存的水果信息如下:" << endl;
for (int i = 0; i < name.size(); i++)
{
cout << name[i] << " " << endl;
cout << weight[i] <<"kg"<< " " << endl;
cout << price[i] << "元"<<" " << endl;
cout << origin[i] << " " << endl;
}
}
};
int main()
{
xinxi q;
q.xingxi("红美人", 100, 15.3, "象山");
q.xingxi("车厘子", 78, 48.8, "智利");
q.xingxi("香梨", 132, 7.8, "新疆");
q.print_info();
return 0;
}
在这个修改后的版本中,每次调用函数xinxi时都会将水果信息存储在类的成员变量中。然后,使用函数print_info输出所有水果的信息。