C ++ linker неопределенная ссылка на функцию не может найти мою ошибку - PullRequest
0 голосов
/ 20 октября 2019

Это домашнее задание. Он компилируется нормально, но компоновщик дает неопределенную ссылку на мою функцию getSalesData - строка 20 сразу после моего первого цикла for. Вот кодЯ не могу найти, где я сделал что-то неправильно;Я определил свой прототип, и он соответствует заголовку моей функции, и я просто вызываю функцию.

// chips and salsa
#include <iostream>
#include <iomanip>
#include <string>

int getJarsSold(std::string type);
void getSalesData(int jarsSold[],int size,int &totalJars,int &highSeller,int &lowSeller);

int main() {
   const int SIZE = 5;
   const std::string salsaTypes[] {"Mild","Medium","Sweet","Hot","Zesty"};
   int jarsSold[SIZE] = {};
   int highIndex,lowIndex,totalJarsSold;


   for (int i = 0; i < SIZE; i++) {
      jarsSold[i] = getJarsSold(salsaTypes[i]);
   }

   getSalesData(jarsSold,SIZE,totalJarsSold,highIndex,lowIndex);

   std::cout << "   Type     Jars Sold\n";
   std::cout << "---------------------\n";
   for (int i = 0; i < SIZE; i++) {
      std::cout << std::setw(8) << salsaTypes[i] << std::setw(15) << jarsSold[i] << std::endl;
   }
   std::cout << "*********************\n";
   std::cout << "Total Sales = " << totalJarsSold << std::endl;
   std::cout << "Highest Seller = " << salsaTypes[highIndex] << std::endl;
   std::cout << "Lowest Seller = " << salsaTypes[lowIndex] << std::endl;
}

int getJarsSold(std::string type) {
   bool validData = false;
   int numJars;

   while (!validData) {
      std::cout << "Enter jars sold this month for " << type << " salsa type: ";
      std::cin >> numJars;

      if (numJars < 0) {
         std::cout << "Number of jars sold must be 0 or positive number.\n";
      }
      else {
         validData = true;
      }
   }
   validData = false;

   return numJars;
}

void getSalesData(int jarsSold[],int size,int totalJars,int highIndex,int lowIndex) {
   bool firstRun = true;
   int highVal,lowVal;
   totalJars = 0;

   for (int i = 0; i < size; i++) {
      if (firstRun) {
         highIndex = i;
         highVal = jarsSold[highIndex];
         lowIndex = i;
         lowVal = jarsSold[lowIndex];
         totalJars += jarsSold[i];
         firstRun = false;
      }
      else {
         totalJars += jarsSold[i];
         if (jarsSold[i] > highVal) {
            highVal = jarsSold[i];
            highIndex = i;
         }
         if (jarsSold[i] < lowVal) {
            lowVal = jarsSold[i];
            lowIndex = i;
         }
      }
   }
}

Любая помощь приветствуется. Я просто использую -c для компиляции и -o для компоновки, ничего сложного, поскольку я не знаю ничего лучше.

...