繁体   English   中英

你能在 C++ 的其他函数中使用函数吗? [等候接听]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM