Я хотел бы получить информацию из текстового файла и назначить эту информацию в объектах класса - PullRequest
0 голосов
/ 24 марта 2019

Почему компилятор выдает мне ошибку: неверное использование 'Student :: Student' |

это файл содержимого (ListOfStudent): 1234 46567 это мой код:

class Student
{string ML,MSV;
public:
    Student();
    Student(string ML,string MSV );
    ~Student();
    void Out();
};
int main()

{
    vector<Student>ListOfStudent;
    {
        ifstream inf("ListOfStudentFile");
        Student st;
        while(inf){
            string ML,MSV;
             inf>>ML>>MSV;
             st.Student(ML,MSV);
            ListOfStudent.push_back(st);
        }
    }

    return 0;

}
Student::Student(string ML,string MSV)
{
    this->ML=ML;
    this->MSV=MSV;

}

1 Ответ

2 голосов
/ 24 марта 2019

Вы не можете вызывать конструктор явно. Вы должны были написать:

while(inf){
            string ML,MSV;
             inf>>ML>>MSV;
            ListOfStudent.push_back(Student(ML,MSV));
        }

Следуя совету Хемила, и если вы используете C ++ 11, вы можете избежать создания временного объекта путем прямой передачи аргументов конструктора следующим образом:

while(inf){
            string ML,MSV;
             inf>>ML>>MSV;
            ListOfStudent.emplace_back(ML,MSV);
        }

Для такой простой структуры, как ваша, в любом случае это не должно иметь никакого значения, поэтому используйте все, что пожелаете.

...