[英]Can you use functions within other functions in C++? [on hold]
我正在尝试将不同的数据转换为字符串以显示对象的属性。 但是,程序给了我一个错误,说没有匹配的 function 调用 function。 具体来说,它是我从#include <string>
文件夹中包含的to_string
。 最后,还有其他方法可以完成这项任务吗? 谢谢你们。
ostream &operator << (ostream &output, Student &stu){
//Construct and return a string representation of the student
string str = "";
str = "Name: " + to_string(stu.name) + "\nTest 1: " + to_string(stu.test1) + "\nTest 2: " +
to_string(stu.test2) + "\nTest3: " + to_string(stu.test3) + "\nAverage: " +
to_string(stu.getAverage());
return str;
}
从其他函数调用函数是非常好的——这是编程的正常部分。 此错误来自另一个问题。
您收到的错误消息意味着“我看到您正在尝试调用 function,但我找不到与您正在调用的内容匹配的 function。”
我的猜测是Student
类型的name
字段是一个字符串? 如果是这样,那将解释您的错误消息,因为没有接受字符串的to_string
function 版本。 只需直接连接名称字段即可。
希望这可以帮助!
您可以使用stringstream而不是那些to_string
:
stringstream ss;
ss << "some string" << stu.name << " " << stu.othermember;
您可以阅读然后使用ss.str()
从stringstream
获取字符串。
在另一个 function 中使用 function 是完全可以的。
您实际上不需要 std::to_string 来重载<<
std stream 运算符,流可以接受它本身以及std::string
的所有原始数据类型。 您可以使用以下内容:
/*
struct Student {
...
float getAverage() const; // last const needed to use this function with constant instance or constant reference
}
*/
std::ostream& operator << (std::ostream &to, const Student &stu) {
to << "Name: " << stu.name << std::endl;
to << "Test 1:" << stu.test1 << std::endl;
to << "Test 2:" << stu.test2 << std::endl;
to << "Test 3:" << stu.test3 << std::endl;
to << "Average: " << stu.getAverage();
return to;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.