更新:没有调用cat ..但是收到错误:在停止程序函数中调用'category :: tostring()'没有匹配函数
string category::tostring(string cat) {
string record = cat + ":" + _itemDescription + ":" + _price;
return string (record);
}
void orderList::stopProgram(){
ofstream fout("menu.txt");
for(size_t i=0; i< _ca.size(); ++i){
fout << _ca[i].tostring() << endl;
}
fout.close();
cout << endl;
}
试过各种方法,在函数停止程序中包含tostring()里面的“string cat”但仍然得到同样的错误
答案 0 :(得分:1)
它没有返回值 drink ,因为你初始化变量并没有填充数据:
string category::tostring() {
string cat; // Here you initialize it (it is empty here)
// I guess _timeDescription and _price are global variables.
string record = cat + ":" + _itemDescription + ":" + _price; // still empty
return string (record); // still ...
您是否还有一个名为cat
的全局变量?如果是这样,请尝试删除本地实例,但很可能您只是忘记调用该方法返回cat
的值。
您显示的返回cat
的代码段似乎没有从任何地方调用,您忘记调用它了吗?如果是,请调用它并将返回值存储在cat
。
更新:
在您的问题更新后,您将原始代码更改为现在包含变量cat
作为参数,您在问题中添加了以下代码:
for(size_t i=0; i< _ca.size(); ++i){
fout << _ca[i].tostring() << endl;
}
你没有写出_ca
的类型,但我的猜测是你在这里调用的tostring
方法是你category
类的方法,在这种情况下,你在调用函数时,错过cat
参数,您现在已经包含在上面的函数声明中。
你应该看看来自demonplus的评论,并更详细地解释你的问题,甚至包括一个可以尝试自己编译的最小例子,它将显示你看到的完全相同的编译错误。