【发布时间】:2021-01-05 21:04:10
【问题描述】:
string yesno(string holder ,vector<string> symptom)
{
if(holder == "Y" || holder == "y"){
return symptom.push_back("Y");
}
else if(holder == "N" || holder == "n"){
return symptom.push_back("N");
}
else{
cout <<"Wrong input" << endl;
return symptom.push_back("-");
}
}
所以这是我的功能,当我询问用户他们是否正在经历某种症状,然后询问 Y/y 或 N/n 以获得答案。
函数中的 if 块检测到 Y 或 N 的大小写,然后我将 symptom.push_back() 返回为“Y”或“N”,但出现此错误:
错误:无法转换 'symptom.std::vectorstd::__cxx11::basic_string
【问题讨论】:
-
void yesno(string holder ,vector<string> symptom)从字面上看是您唯一的选择。无论您想做什么,这都不是解决方案。 -
也许你的意思是
if(holder == "Y" || holder == "y") { symptom.push_back("Y"); return "Y"; },等等。 -
请记住,您的函数将按值接收向量作为副本,因此您对其所做的任何更改都不会在此函数之外可见。您可能希望通过引用传递向量或简单地返回向量,但如果没有在minimal reproducible example 中使用它的上下文,很难给出建议。
-
你打算用返回值做什么?应该返回什么value?您是否期望
.push_back本身返回一些东西?如果是这样,是什么以及为什么?你有没有尝试阅读它的文档? -
你真正想要的是vector.emplace_back和c++17或更高版本,然后该函数返回对插入元素en.cppreference.com/w/cpp/container/vector/emplace_back的引用