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

时间:2013-03-19 12:55:23

标签: c++

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”

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

1 个答案:

答案 0 :(得分:1)

读写功能与您尝试的方式不同。它们只适用于没有指针的类,但是string有指针,你的类有字符串,所以你不能使用它们。

您将不得不找到一种不同的方式来读取和写入您的数据。这有什么问题

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

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

同样不是您提出的问题,但inout不应在您的Student课程中声明。它们应该在您使用它们的函数中声明。