我基本上是这样写的:-
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/