c++:尝试从自定义头文件调用函数时,参数错误

C++: Argument error while trying to call a function from a custom header file

本文关键字:函数 调用 错误 参数 文件 自定义 c++      更新时间:2023-10-16

因此,这个程序意味着有三个并行数组,它们包含十个帐户持有人的姓名、他们的id和余额。我的主文件看起来像这样:

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
#include "IOFunctions.h" // My header file
using namespace std;
int main ()
{   
    const int AR_SIZE = 10;
    string nameAr;
    int    idAr;
    float  balanceAr;
    // F U N C T I O N -- ReadInData
    ReadInData(nameAr,
               idAr,
               balanceAr,
               AR_SIZE);
}

我得到的错误看起来像这样:https://i.stack.imgur.com/TuNh7.png

现在,头文件看起来像这样:
#ifndef IOFUNCTIONS_H_ // This is my own header
#define IOFUNCTIONS_H_
#include <iomanip>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

string ReadInData(string    nameArray[],
                  int       idArray[],
                  float     balanceArray[],
                  const int ARRAY_SIZE)
{
    ifstream inFile;
    string inFileName;
    string outFileName;
    // INPUT -- Prompts user for input file name
    cout << left << setw(40)
         << "What input file would you like to use? ";
    getline(cin, inFileName);
    // Checks that the file name entered is accessible
    while(inFileName != "InFile.txt")
    {
        cout << setw(40) << "Please enter a valid file name: ";
        getline(cin, inFileName);
    }
    // INPUT -- Prompts user for output file name
    cout << setw(40)
         << "What output file would you like to use? ";
    getline(cin, outFileName);
    // Checks that the file name entered is accurate to assignment
    while(outFileName != "OFile.txt")
    {
        cout << setw(40) << "Please enter a valid file name: ";
        getline(cin, outFileName);
    }
    // PROCESSING -- Takes the data from the input file and assigns it
    //               to the names array, ID array, and balance array
    // NAME ARRAY
    inFile.open(inFileName.c_str());
    for(int index = 0; index < ARRAY_SIZE; index++)
    {
        inFile >> nameArray[index];
    }
    inFile.close();
    // ID ARRAY
    inFile.open(inFileName.c_str());
    for(int index = 0; index < ARRAY_SIZE; index++)
    {
        inFile >> idArray[index];
    }
    inFile.close();
    // BALANCE ARRAY
    inFile.open(inFileName.c_str());
    for(int index = 0; index < ARRAY_SIZE; index++)
    {
        inFile >> balanceArray[index];
    }
    inFile.close();
    return outFileName;
}
#endif /* IOFUNCTIONS_H_ */
非常感谢所有的帮助。如果我遗漏了什么,请告诉我

ReadInData接受string*,但您传递的是string。通过传递一个引用来修复这个问题:

string ReadInData(string    &nameArray, //<--
              int       idArray[],
              float     balanceArray[],
              const int ARRAY_SIZE)