繁体   English   中英

将结构数组传递给抛出未定义参考的函数的问题c ++

[英]problem passing array of struct to a function throwing undefined reference c++

将结构数组传递给搜索它们的函数时遇到问题。 我在main外部delcare了一个结构体数组,然后将其复制到main内部的新结构体数组(因此我可以在main内部访问它们,并且可以更轻松地传递它们)。 不知道为什么它会失败。 谁能帮我?

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <algorithm>
using namespace std;

const int MAX = 2000000;
const string DFile = "DFile.dms";
const string EFile = "EFile.dms";
const string VFile = "VFile.dms";

struct dogs
{
  int did;
  int age;
} DFBuffer[MAX];

struct examine
{
  int vid;
  int did;
  int fee;
} EFBuffer[MAX];

struct vet
{
  int vid;
  int eLevel;
} VFBuffer[MAX];

void readDF(ifstream&);
void readEF(ifstream&);
void readVF(ifstream&);
int getLineCount(ifstream&);
bool dogCompare(dogs lhs, dogs rhs) {return lhs.did < rhs.did;}
bool vetCompare(vet lhs, vet rhs) {return lhs.vid < rhs.vid;}
bool examCompare(examine lhs, examine rhs) {return lhs.vid < rhs.vid;}
void vetExamSeach(struct vet newVetArray[], struct examine newExamArray[], 
int, int);

int main()
{
  dogs * newDogArray = new dogs[MAX];
  examine * newExamArray = new examine[MAX];
  vet * newVetArray = new vet[MAX];

  ifstream DF, EF, VF;
  int dogCount = 0, examCount = 0, vetCount = 0;

  DF.open(DFile);
  readDF(DF);
  EF.open(EFile);
  readEF(EF);
  VF.open(VFile);
  readVF(VF);

  DF.open(DFile);
  dogCount = getLineCount(DF);
  EF.open(EFile);
  examCount = getLineCount(EF);
  VF.open(VFile);
  vetCount = getLineCount(VF);


  for(int i = 0; i < dogCount; i++)
    newDogArray[i] = DFBuffer[i];
  for(int i = 0; i < vetCount; i++)
    newVetArray[i] = VFBuffer[i];
  for(int i = 0; i < examCount; i++)
    newExamArray[i] = EFBuffer[i];

  cout << "Sorting...\n";
  sort(newDogArray, newDogArray + dogCount, dogCompare);
  sort(newExamArray, newExamArray + examCount, examCompare);
  sort(newVetArray, newVetArray + vetCount, vetCompare);
  cout << "Sorting complete!\n";

  vetExamSeach(newVetArray, newExamArray, vetCount, examCount);


  return 0;
}

这是搜索功能。 为了这个问题,我只是想打印我通过的内容。

void search(vet newVetArray[], examine newExamArray[], int vCount, int eCount)
{
  for(int i = 1; i < vCount; i++)
    cout << "in search:     " << newVetArray[i].vid << ' ' << newVetArray[i].eLevel << endl;
}

这是我得到的错误

这是我的文件。 不要求您做我的硬件只是帮助我解决我的问题

当我运行您的代码时,对于readDf,readEF,readVF,getLineCount和vetExamSeach,我得到未定义引用的相同编译错误。 该错误是因为没有这些功能的定义。 只是贴花而已。 当我定义它们(某种随机的)时,错误消失了。 因此,定义函数,错误将消失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM