hackerrank在c ++中提出错误

时间:2015-07-29 12:28:41

标签: c++ class std void ostream

我的代码出了什么问题

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)'

4 个答案:

答案 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;
}