【发布时间】:2009-04-02 06:00:30
【问题描述】:
我一直在努力完成这个程序,它将多个结构保存到一个文件中,可以将它们读回并编辑它们,然后将它们全部保存回一个文件中。我一直在研究这个逻辑,更不用说其他人的大量帮助和大量的谷歌搜索......现在我遇到了编译错误。任何帮助将不胜感激。
代码:
template<typename T>
void writeVector(ofstream &out, const vector<T> &vec);
struct InventoryItem {
string Item;
string Description;
int Quantity;
int wholesaleCost;
int retailCost;
int dateAdded;
} ;
int main(void)
{
vector<InventoryItem> structList;
ofstream out("data.dat");
writeVector( out, structList );
return 0;
}
template<typename T>
void writeVector(ofstream &out, const vector<T> &vec)
{
out << vec.size();
for(vector<T>::const_iterator i = vec.begin(); i != vec.end(); i++)
{
out << *i; // error C2679
}
}
编译器错误:
1>.\Project 5.cpp(128) : error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'const InventoryItem' (or there is no acceptable conversion)
// listed overload variants skipped
1> while trying to match the argument list '(std::ofstream, const InventoryItem)'
1> .\Project 5.cpp(46) : see reference to function template instantiation 'void writeVector<InventoryItem>(std::ofstream &,const std::vector<_Ty> &)' being compiled
1> with
1> [
1> _Ty=InventoryItem
1> ]
【问题讨论】:
-
考虑使用较短的标题,并将当前标题移动到问题的正文中。很难阅读这个问题,因为标题格式不太适合这么长的内容。
-
啊抱歉!我认为“帮助解决这个编译错误”太含糊了。我正在尝试尽可能具体!
-
尝试类似“'
标签: c++ serialization struct compiler-errors