为什么我不能在函数中使用 outf C++

Why can't I use outf in a function in C++

本文关键字:outf C++ 函数 不能 为什么      更新时间:2023-10-16

我想在函数中使用 outf,但是当我尝试时,它会显示'未定义的'错误。

我使用Visual Studio 2013,这是我的代码

int main(){
int costumer;
int d;
cout <<"Enter Number : ";
cin >> costumer;
d = costumer; 
int *Erand = new int[d]; //Random Number 1
int *Srand = new int[d]; //Random Number 2
int *SumArrays = new int[d]; // sum Array 
ofstream outf("Sample.dat");
//------------------------- Make Random Numbers
srand(time(0));
for (int  i = 0; i< d; i++)
{
    Erand[i] = 1 + rand() % 99;
}
for (int i = 0; i< d; i++)
{
    Srand[i] = 1 + rand() % 999;
}
//---------------------------- Out Put 
outf << "Random Number 1 " << endl;
for (int i = 0; i < d; i++) // i want it in a function
{
    outf << Erand[i];
    outf << ",";
}
outf << endl;
outf << "Random Number 2 " << endl;
for (int i = 0; i < d; i++)// i want it in a function
{
    outf << Srand[i];
    outf << ",";
}
outf << endl;
//--------------------------------calculator -------------------------
for (int  i = 0; i < d; i++)
{
    SumArrays[i] = Erand[i] + Srand[i];
}
outf << "Sum Of Array is : ";
outf << endl;
for (int  i = 0; i < d; i++)
{
    outf << SumArrays[i];
    outf << ",";
}
outf << endl;
delete[] Erand;
delete[] Srand;
delete[] SumArrays;}

例如,我想在函数中使用随机数1:

void Eradom(){
for (int i = 0; i < d; i++)
{
    outf << Erand[i];
    outf << ",";
}

但是我在第4行中有错误。

outf是您的 main函数中的局部变量。为了使其可访问其他功能,您可以将其定义为全局变量(通常不建议使用),也可以将其明确传递到Erandom函数。

您在main()内定义了outf,但是您尝试在功能Erandom()中访问它。这导致了此错误。您必须将其作为参数传递到函数Erandom()

您的 outf变量是main的局部变量,因此在 Erandom函数中不可见。要将变量传递到您的函数中,请像

一样定义它
void Eradom(std::ostream &outf) {
  for (int i = 0; i < d; i++) {
    outf << Erand[i];
    outf << ",";
  }
}

并将其从main称为

Eradom(outf);