У меня есть задача объединить два файла с помощью функции. Так что я пытался это сделать:Зачем нам передавать файлы по ссылке на функции в C++?
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
void concatenateFiles(ifstream fileA, ifstream fileB, ofstream fileAB){
...
}
Но у меня все еще была ошибка, которую я не мог понять. Поэтому я изменил это на:
...
void concatenateFiles(ifstream &fileA, ifstream &fileB, ofstream &fileAB){
...
}
И это сработало, но я не совсем уверен, почему. Я предполагаю, что это имеет какое-то отношение к неспособности доступа к файлам, если они не были переданы по ссылке. Может быть, C++ не может сделать копию файла, как если бы он делал копии других переменных, если они не были переданы по ссылке? Это насколько я могу с этим справиться. Это мой первый курс программирования, поэтому, если вы, ребята, могли бы максимально легко ответить на вопрос, было бы здорово!
Спасибо, Рами.
Да, ['std :: ifstream'] (http://en.cppreference.com/w/cpp/io/basic_ifstream/basic_ifstream) не предоставляет конструктор копирования. –
Что это значит для копирования потока? –
@DavidSchwartz Я до сих пор не полностью понял концепцию «потока», поэтому пока не могу рассуждать на этом уровне:/ –