gpt4 book ai didi

c++ - 将 fstreams 数组传递给函数?

转载 作者:行者123 更新时间:2023-11-28 04:55:40 24 4
gpt4 key购买 nike

我基本上是这样写的:-

void function(fstream& f[], int m){
// using fstream objects
}

int main()
{
int m = 4;
fstream f[m];
f[0].open("f0.txt");
f[1].open("f1.txt");
f[2].open("f2.txt");
f[3].open("f3.txt");

function(f, m);

return 0;
}

以下是即将出现的错误:-

error: declaration of ‘f’ as array of references|
error: expected ‘)’ before ‘,’ token|
error: expected unqualified-id before ‘int’|

所有这些错误都在线

void function(fstream& f[], int m){

如果我只是在函数内初始化 fstream 数组,错误就会消失。如果我在 main 函数中初始化它们,我应该怎么做才能消除错误?

最佳答案

主要问题是您试图将指针传递给引用,而不是数组。要解决这个问题,你应该传递一个真正的指针 fstream *或者(更好)使用::std::array 代替:

using t_FileStreams = ::std::array<::std::fstream, 4>;

void sort(t_FileStreams & streams){
// using fstream objects
}

int main()
{
t_FileStreams f;
f[0].open("f0.txt");
f[1].open("f1.txt");
f[2].open("f2.txt");
f[3].open("f3.txt");

sort(f);

return 0;
}

或者,您可能想使用 std::vector<::std::fstream>如果事先不知道元素的数量。另请注意代码 int m = 4; fstream f[m];在 C++ 中是不合法的,因为数组大小必须是编译时已知的常量。

关于c++ - 将 fstreams 数组传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47172134/

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