проблема передачи массива структуры к функции, бросающей неопределенную ссылку c ++ - PullRequest
0 голосов
/ 06 ноября 2018

У меня проблемы с передачей массива структур в функцию, которая их ищет. Я разыскиваю массив структур вне main, а затем копирую его в новый массив структур внутри 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;
}

вот ошибка, которую я получаю

Вот мои файлы. Не прошу вас сделать мой HW просто помочь мне решить мою проблему

1 Ответ

0 голосов
/ 06 ноября 2018

Когда я запускаю ваш код, я получаю ту же ошибку компиляции с неопределенной ссылкой для readDf, readEF, readVF, getLineCount и vetExamSeach. Ошибка в том, что нет определения этих функций. Есть только просто декаларации. Когда я определяю их (что-то случайное), ошибки исчезают. Итак, определите функцию (и), и ошибки исчезнут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...