내 코드에 어떤 문제가 있는지 알 수 없습니다. 두 파일에 대한 콘솔에서 파일 경로를 얻으려고하는 중입니다. 그런 다음 해당 파일과 ios::in | ios::out
을 하나의 fstream 개체로 초기화하고 다른 하나는 ios::binary
을 추가합니다. 말,C++ : fstream을 인수로 전달하려고 할 때 삭제 된 함수는 무엇입니까?
// Function prototypes
void INPUT_DATA(fstream);
void INPUT_TARGETS(fstream);
int main()
{
// Ask the user to specify file paths
string dataFilePath;
string targetsFilePath;
cout << "Please enter the file paths for the storage files:" << endl
<< "Data File: ";
getline(cin, dataFilePath); // Uses getline() to allow file paths with spaces
cout << "Targets File: ";
getline(cin, targetsFilePath);
// Open the data file
fstream dataFile;
dataFile.open(dataFilePath, ios::in | ios::out | ios::binary);
// Open the targets file
fstream targetsFile;
targetsFile.open(targetsFilePath, ios::in | ios::out);
// Input division data into a binary file, passing the proper fstream object
INPUT_DATA(dataFile);
// Input search targets into a text file
INPUT_TARGETS(targetsFile);
...
}
// Reads division names, quarters, and corresponding sales data, and writes them to a binary file
void INPUT_DATA(fstream dataFile)
{
cout << "Enter division name: ";
...
dataFile << divisionName << endl;
...
}
// Reads division names and quarters to search for, and writes them to a file
void INPUT_TARGETS(fstream targetsFile)
{
cout << "\nPlease input the search targets (or \"exit\"):";
...
targetsFile.write(...);
...
}
그러나, 비주얼 스튜디오는 INPUT_DATA(dataFile);
및 INPUT_TARGETS(targetsFile);
부분에 나에게 고함 :
function "std::basic_fstream<_Elem, _Traits>::basic_fstream(const std::basic_fstream<_Elem, _Traits>::_Myt &) [with _Elem=char, _Traits=std::char_traits<char>]" (declared at line 1244 of "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\fstream") cannot be referenced -- it is a deleted function
내가 헤더 파일에 주위를 파고 여기에
내 코드의 중요한 부분입니다 내가 라인 1244 찾을 때까지basic_fstream(const _Myt&) = delete;
을 나는 아무 생각 ㅁ이 없다 이런 일이 일어나고 있습니다. 나는 여전히 C++을 처음 접했고 아마 뭔가 바보 같은 짓을했을 것이다. 그러나 누군가 도와 줄 수 있을까?
편집 : 설명했습니다 제목 std::fstream
년대의 복사 생성자가 삭제 되었기 때문에입니다
이 외에도'std :: istream &'을 사용하는 함수를 변경하면 파일 외에도 작업 할 수 있습니다. 예를 들어, 문자열 스트림을 전달하여 논리를 테스트 할 수 있습니다. – chris