未定义的引用

Undefined reference?

本文关键字:引用 未定义      更新时间:2023-10-16

我收到一个未定义的引用错误。我已经盯着这段代码大约一个小时试图弄清楚。这是我得到的错误。

fileToArray(std::basic_fstream<char, std::char_traits<char> >&, int*, int)的未定义引用

这是我的代码。

#include <iostream> 
#include <fstream>
#include <string>
#include <cctype>
#include <cstring>
using namespace std;
void arrayToFile(fstream&, int*, int);
void fileToArray(fstream&, int*, int);
int main()
{
fstream dataFile;
int numInt; //Size of array
int* numArray; //Array to hold integers
int num; //Integer for user to input into array.
cout << "Enter the number of integers you would like to put inside of an array: ";
cin >> numInt;
numArray = new int[numInt];
cout << "nFill in the array with integers";
for (int i = 0; i < numInt; i++)
{
    cout << "Enter integer for position " << i << ": ";
    cin >> num;
    numArray[i] = num;
}
arrayToFile(dataFile, numArray, numInt);
fileToArray(dataFile, numArray, numInt);
cout << "Contents of numArray" << endl;
for (int i = 0; i < numInt; i++)
{
    cout << numArray[i] << " ";
}
delete [] numArray;
return 0;
}
//****************************
//Define arrayToFile function*
//****************************
void arrayToFile(fstream &dataFile, int* numArray, int SIZE)
{
dataFile.open("Ch12p8.dat", ios::out | ios::binary);
if(dataFile)
    dataFile.write((char*)numArray, SIZE);
dataFile.close();
}//end arrayToFile function
//****************************
//Define fileToArray function*
//****************************
void fileToFile(fstream &dataFile, int* numArray, int SIZE)
{
dataFile.open("Ch12p8.dat", ios::in | ios::binary);
if(dataFile)
    dataFile.read((char*)numArray, SIZE);
dataFile.close();
}//end fileToArray function

不是函数fileToArray而是定义了函数fileToFile。我认为这是一个错字。

//****************************
//Define fileToArray function*
//****************************
void fileToFile(fstream &dataFile, int* numArray, int SIZE)
     ^^^^^^^^^^
{
dataFile.open("Ch12p8.dat", ios::in | ios::binary);
if(dataFile)
    dataFile.read((char*)numArray, SIZE);
dataFile.close();
}//end fileToArray function
void fileToFile

这就是原因。您声明了 fileToArray,但从未定义过它。

你在 fileToArray 的定义中有一个拼写错误

void fileToFile(fstream &dataFile, int* numArray, int SIZE)

你把它叫做filetoFile。