c++ - 未定义模板 'std::__1::vector 的隐式实例化- ' 错误
问题描述
我正在尝试将类的指针存储在向量中,但出现错误
未定义模板 'std::__1::vector<Item *>' 的隐式实例化
代码是:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Item{
private:
string itemName;
float itemPrice;
int itemQuantity;
public:
Item(string name = "NULL", float price = 0, int quantity = 0){
itemName = name;
itemPrice = price;
itemQuantity = quantity;
}
friend ofstream & operator<<(ofstream &ofs, Item &i);
friend ifstream & operator>>(ifstream &ifs, Item &i);
friend ostream & operator<<(ostream &os, Item &i);
};
ofstream & operator<<(ofstream & ofs, Item &i){
ofs << i.itemName << endl;
ofs << i.itemPrice << endl;
ofs << i.itemQuantity << endl;
return ofs;
}
ostream & operator<<(ostream &os, Item &i){
os << i.itemName << endl;
os << i.itemPrice << endl;
os << i.itemQuantity << endl;
return os;
}
ifstream & operator>>(ifstream & ifs , Item & i){
ifs >> i.itemName;
ifs >> i.itemPrice;
ifs >> i.itemQuantity;
return ifs;
}
int main() {
int n;
string name;
float price;
int qty;
cout<<"Enter number of Item:";
cin>>n;
vector<Item *> items;
cout<<"Enter All Item "<<endl;
for(int i=0;i<n;i++)
{
cout<<"Enter "<<i+1<<" Item Name , price and quantity";
cin>>name;
cin>>price;
cin>>qty;
items.push_back(new Item(name,price,qty));
}
ofstream fos("Items.txt");
for(int i=0;i<n;i++)
{
fos<<*items[i];
}
Item item;
ifstream fis("Items.txt");
for(int i=0;i<3;i++)
{
fis>>item;
cout<<"Item "<<i<<item<<endl;
}
}
它看起来像一个基本错误,但我找不到解决方法。如何将用户定义类的指针存储在向量中?我的语法是关闭的还是向量不能那样工作?
解决方案
你没有包括
#include <vector>
添加它,您的代码将编译干净。
推荐阅读
- java - 获取一个带有 ajax 和内部参数的 form.jsp
- javascript - 如何处理请求@types 安装项目依赖的非打字稿项目?
- javascript - jQuery - 隐藏更改下拉列表时出错
- ios - 按钮在按下后显示旧的 JSON 值,即使它在 API 中每分钟更改一次
- django - Flutter,具有许多表的复杂 SQLite DB,这是最佳实践吗?
- django - 如何使 Django Rest API 嵌套注释?
- events - 消息幂等性 - 排序注意事项
- c# - 这个 linq 代码在做什么?总结什么?
- syntax-highlighting - Asciidoctor 不通过 highlightjs 突出显示源代码
- python-3.x - Python:嵌套函数命名冲突