我的代码出了什么问题
plz指定我出错的错误
hackerrank提出的问题是 我们可以在与age(int),first_name(字符串),last_name(字符串)和standard(int)组成的类中存储与学生相关的详细信息。
如上所述,您必须创建一个名为Student的班级,代表学生的详细信息,并存储学生的数据。为每个元素创建setter和getter函数;也就是说,该类至少应具有以下功能:
get_age,set_age get_first_name,set_first_name get_last_name,set_last_name get_standard,set_standard 此外,您还必须创建另一个方法to_string(),该方法返回由上述元素组成的字符串,以逗号(,)分隔。你可以参考stringstream。
输入格式
输入将包含四行。 第一行将包含一个表示年龄的整数。第二行将包含一个字符串,由小写拉丁字符组成(' a' - ' z'),代表学生的first_name。 第三行将包含另一个字符串,由小写拉丁字符组成(' a' - ' z'),代表学生的last_name。 第四行将包含一个整数,代表学生的标准。
注意:first_name和last_name中的字符数不会超过50。
输出格式
HackerRank提供的代码将使用您的类成员来设置然后获取Student类的元素。
示例输入
15 约翰 卡马克 10 样本输出
15 卡马克,约翰 10
15,约翰,卡马克,10
{{1}}
我收到了错误
尝试匹配参数列表'(std :: ostream,void)'
答案 0 :(得分:0)
get_age
的返回类型为void
。这就是您收到此错误的原因。
void Student::get_age()
{
cout << Age ;
}
cout << st.get_age() << endl;
答案 1 :(得分:0)
你的获取者不应该返回data file
,他们应该为每个成员变量返回适当的类型,例如
void
和其他吸气者一样。
当您通过int Student::get_age()
{
return Age;
}
获得函数输出值时,您只是将值写入输出流,实际上您并未返回值,因此您无法执行此类操作< / p>
std::cout
因为您的cout << st.get_age() << endl;
函数当前返回get_age()
答案 2 :(得分:0)
你的getter函数返回void,
void Student::get_age()
{
cout << Age ;
}
理想情况下,您应该在此处返回int
,以便调用者可以接收该值。
int Student::get_age()
{
return Age;
}
或在您的代码中,您可以在main
中将此语句从cout << st.get_age() << endl;
替换为st.get_age()
。因为你直接在getter中显示它。
答案 3 :(得分:-1)
这是纠正错误后的代码。 您的错误之一是 getters 函数应返回数据类型.. 即
int Student::get_standard() const
{
return standard;
}
这就是整个解决方案,如果您想提出任何问题,只需发表评论:)
。
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
class Student
{
private:
string first_name;
string last_name;
int age;
int standard;
public:
//setters
void set_age(int);
void set_standard(int);
void set_first_name(string);
void set_last_name(string);
//getters
int get_age() const;
int get_standard() const;
string get_first_name() const;
string get_last_name() const;
string to_string()const;
};
//Setters difinitions
void Student::set_age(int a)
{
age=a;
}
void Student::set_standard(int stan)
{
standard =stan;
}
void Student::set_first_name(string name)
{
first_name=name;
}
void Student::set_last_name(string name)
{
last_name=name;
}
//Getters difinitions
int Student::get_age() const
{
return age;
}
int Student::get_standard() const
{
return standard;
}
string Student::get_first_name() const
{
return first_name;
}
string Student::get_last_name() const
{
return last_name;
}
string Student::to_string()const
{
//Transforming age and standard to strings to
//conctenate them in one sentence
string stringAge,stringStandard;
stringstream ss; ss<<age;
stringAge=ss.str();
stringstream nn;nn<<standard;
stringStandard=nn.str();
return stringAge+","+first_name+","+last_name+","+stringStandard;
}
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;
}