【问题标题】:invalid conversion from 'int' to 'const char*' [-fpermissive]从“int”到“const char*”的无效转换 [-fpermissive]
【发布时间】:2015-09-25 08:06:31
【问题描述】:

我跳过了上面的部分 这是一个普通的 c++ 程序,使用打印姓名、年龄和标准的类

代码如下:

string to_string()
{
    return age,last_name,first_name,standard; //PROBLEM IS HERE
}
};

int main() {
    int age, standard;
    string first_name, last_name;

    cin >> age >> first_name >> last_name >> standard;

    Student st;
    st.set_age(age);
    st.set_standard(standard);
    st.set_first_name(first_name);
    st.set_last_name(last_name);


    cout << st.get_age() << "\n";
    cout << st.get_last_name() << ", " << st.get_first_name() << "\n";
    cout << st.get_standard() << "\n";
    cout << "\n";
    cout << st.to_string();

    return 0;
}

【问题讨论】:

  • 你到底想用return实现什么?
  • 我希望所有字符串(姓名、年龄、标准)都放在一行中
  • 所以你只是假设你可以用逗号连接字符串?当您不知道时,您应该查找这些东西。

标签: c++ string


【解决方案1】:
string to_string()
{
    return age,last_name,first_name,standard; //PROBLEM IS HERE
}

我假设您想将所有成员数据连接成一个字符串并返回该字符串,但逗号运算符只计算其第一个表达式,丢弃该值,然后返回第二个表达式的值。

您可以创建一个std::string,然后重复附加到它。我认为std::stringstream 对于这样的事情有点清洁:

string to_string()
{
    std::stringstream ss;
    ss << age << ' ' << last_name << ' ' << first_name << ' ' << standard;
    return ss.str();
}

【讨论】:

  • 然后在这些语句中出现错误:Student st; st.set_age(年龄); st.set_standard(标准); st.set_first_name(first_name); st.set_last_name(last_name);未定义对 Student::set_blah 的引用
  • @A.Bora 你定义了这些函数吗?您是否与生成的目标文件链接?这些错误在您未在此处显示的代码中。
  • 但不是#include 的那些内置函数吗?
  • @A.Bora 问题是链接器找不到Student::set_x 函数的定义。这与std::stringstream 无关。
  • 我已经定义了函数 void set_age(int age);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-01-20
  • 2014-01-16
  • 1970-01-01
  • 2019-09-22
相关资源
最近更新 更多