如何将一个类的对象传递给同一类的函数

How to pass an object of a class to a function of the same class?

本文关键字:函数 一类 对象 一个      更新时间:2023-10-16
int main(){
   int choice;
   fstream in, out;                             
  switch(choice)
  {
  case 1: 
      filename = s.studentRegister();
      out.open(filename.c_str(), ios::out);
      out.write((char *)&s, sizeof(Student));
      cout<<endl<<"Registered successfully."<<endl;
  case 2:
      s.studentLogin();
  }                                   
}
class Student
{
std::string studentName, roll, studentPassword;
fstream in, out;
public:
std::string studentRegister()
{
    cout<<"Enter roll number"<<endl;
    cin>>roll;
    cout<<"Enter current semester"<<endl;
    cin>>ch;
    cout<<"Enter your name"<<endl;
    cin>>studentName;
    cout<<"Enter password"<<endl;
    cin>>studentPassword;
    return (roll+".dat");
}
void studentLogin()
{
            Student s;
    cout<<"Enter roll number: "<<endl;
            cin>>roll;
    cout<<"Enter password: "<<endl;
    cin>>studentPassword;
    filename = roll + ".dat";
    in.open(filename.c_str(), ios::in);
    in.read((char *)&s, sizeof(Student));
    read.close();
    if((studentPassword.compare(s.studentPassword)==0))
    {
        system("cls");
        cout<<"Welcome "<<s.studentName<<"!"<<endl;
        displayStudentMenu();
    }
    else
    {
        cout<<"Invalid user";
        exit(0);
    }
}

我有两个函数在我的学生类:studentRegister()studentLogin()。当调用studentRegister时,它接受学生的所有详细信息,然后将相应类的对象写入一个DAT文件。现在,当登录时,我正试图使用in.read((char *)&s, sizeof(Student));

将文件的内容读取为对象"s"。

但是,这会导致运行时错误并突然关闭控制台。出了什么问题?

读和写不像你想的那样工作。它们只适用于没有指针的类,但是字符串有指针,而你的类有字符串,所以你不能使用它们。

你必须找到一种不同的方式来读写你的数据。这是怎么了

out << studentName << ' ' << roll << ' ' << studentPassword << 'n';

in >> studentName >> roll >> studentPassword;`

也不是你问的问题,但inout不应该在你的Student类声明。它们应该在使用它们的函数中声明。