Мне нужна функция, чтобы открыть файл и заполнить мой вектор. Я думал между векторной функцией без аргументов (поэтому я бы написал list = fileBeg ()) и void функцией с векторным аргументом (так что я бы просто передал свой список: fileBeg (list)). Я выбрал 2-й способ, потому что мне также нужно, чтобы мой объект ifstream был глобальным, чтобы я мог записать свой вывод, чтобы моя функция работала как fileBeg (список, файл), но я не уверен, как это сделать. В настоящее время у меня есть:
void fileBeg(std::vector <student> * list, std::ifstream * file) {
std::string fileName;
std::cout << "Input name of file: ";
std::cin >> fileName;
std::ifstream (* file)(fileName);
student temp;
while(* file >> temp){
(* list).push_back(temp);
}
}
Но я, очевидно, получаю ошибку на std::ifstream (* file)(fileName);
, потому что это переопределение объектного файла ifstream. Мне нужно что-то вроде (* file) (fileName), так же, как мы пишем i = 5, если я уже инициализирован, но это не работает таким образом.
Я мог бы сделать это с глобальной переменной, и даже если это нормально для текущей задачи, я не думаю, что это хорошая привычка.