C ++类从函数中返回另一个值

时间:2015-04-15 10:31:54

标签: c++

更新:没有调用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”但仍然得到同样的错误

1 个答案:

答案 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的评论,并更详细地解释你的问题,甚至包括一个可以尝试自己编译的最小例子,它将显示你看到的完全相同的编译错误。