C++ 用函数输入值,怎么把值输出来

C++ 结构体变量s1 用函数获取成员的信息,怎样把获取的信息输出来??现在的代码 s1中的成员信息显示出来都是第二次输入的!!两次输出是一样的

#include<iostream>
#include<string>

using namespace std;
struct student
{
    string N_name;
    string N_sex;
    int N_age;

    void Set_name()
    {


        cout << "请输入学生姓名:" << endl;
        cin >> N_name;



    }
    void Set_sex()
    {


        cout << "请输入学生性别:" << endl;
        cin >>N_sex;



    }
    void Set_age()
    {


        cout << "请输入学生年龄:" << endl;
        cin >>N_age;




    }
    void Show_message()
    {
        cout << "姓名:" << N_name << " 性别:" << N_sex << " 年龄:" << N_age << endl;
    }
};

typedef student CLASS;
int main()
{
    CLASS s1;
    CLASS *s2;//结构体指针 赋初值  要有空间 
    CLASS &s3 = s1;


    s2 = new CLASS[2];

    for (int j = 0; j < 2; j++)
    {
        s1.Set_name();//对成员变量赋初值 不用小括号 成员函数才用 
        s1.Set_sex();
        s1.Set_age();
    }
    cout << "一班人数为2人" << endl;
    for (int j= 0; j < 2; j++)
    {
        s1.Show_message();
    }

    for (int i = 0; i < 2; i++)
    {
        s2[i].Set_sex();
        s2[i].Set_name();
        s2[i].Set_age();

    }
    cout << "二班人数为2人" << endl;

    for (int i = 0; i < 2; i++)
    {
        s2[i].Show_message();
    }

    system("pause");
    return 0;
}

图片说明

string Set_name()
{
cout << "请输入学生姓名:" << endl;
cin >> N_name;
return N_name;;
}
这样就可以传出来了
s2[i].N_Name = s2[i].Set_Name();