gpt4 book ai didi

C++:尝试将 fstream 作为参数传递时删除函数?

转载 作者:行者123 更新时间:2023-11-30 01:10:22 25 4
gpt4 key购买 nike

我不知道我的代码有什么问题。我试图从控制台获取两个文件的文件路径,然后用这些文件和 ios::in | 初始化一些 fstream 对象。其中一个是 ios::out,另一个是 ios::binary

以下是我的代码的重要部分:

// 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); 部分对我大喊大叫,说:

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::fstream。在你的例子中,你想通过引用传递它,因为你想修改你在 main 中创建的原始 std::fstream,而不是创建一个整体新的(这就是复制构造函数被删除的原因,顺便说一句 :))。

关于C++:尝试将 fstream 作为参数传递时删除函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com