私のコードに何が問題なのか分かりません。私は2つのファイルのコンソールからファイルパスを取得しようとしています。次に、それらのファイルでいくつかのfstreamオブジェクトを初期化し、一方はios::in | ios::out
、もう一方はios::binary
を追加します。ここでC++:引数としてfstreamを渡そうとしたときに削除された関数?
は、私のコードの重要な部分です:
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
私はヘッダファイルに周り掘っ:
// 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(...);
...
}
ただし、Visual Studioは言って、INPUT_DATA(dataFile);
とINPUT_TARGETS(targetsFile);
部分に私に叫びます私が1244行目を見つけるまで:
basic_fstream(const _Myt&) = delete;
私は考えていませんこれは起こっている。私はまだC + +にはかなり新しく、おそらくちょうど何かばかげたことをやろうとしていますが、助けてもらえますか?
EDIT:明確化タイトル
これに加えて、 'std :: istream&'をとるように関数を変更することで、それ以外のファイルを扱うことができます。たとえば、文字列ストリームを渡すことでロジックをテストできます。 – chris