以向量作为参数的 C++ 调用函数

c++ calling functions with vectors as the parameter

本文关键字:C++ 调用 函数 参数 向量      更新时间:2023-10-16

我有以下代码,当我尝试构建它时,我不断收到此错误:

错误:

1>------ Build started: Project: practice, Configuration: Debug Win32 ------
1>  pratice.cpp
1>pratice.obj : error LNK2019: unresolved external symbol "double __cdecl CalcScore(class std::vector<double,class std::allocator<double> > *)" (?CalcScore@@YANPAV?$vector@NV?$allocator@N@std@@@std@@@Z) referenced in function _main
1>C:UsersNeil ArmstrongDesktoppracticeDebugpractice.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

代码为:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
double CalcScore(double);
void points(double);
void grade(char);
int main ()
{ 
  double CalcScore(vector<double> *);
  // Declare constant
  double first_exam = 0;
  double second_exam = 0;
  double final_exam = 0;
  double aHomework = 0;
  double totalPoints = 0;
  double median = 0;
  double SUM = 0;

  // Declare a vector of doubles
  vector<double> homework;
  //  Ask the user to enter in the score for the first midterm.
  cout << "nPlease enter in the score for the first exam: ";
  // This value is read in and saved.
  cin >> first_exam;
      // Ask the user to enter in the score for the second midterm.
  cout << "nPlease enter in the score for the second exam: ";
      // This value is read in and saved.
  cin >> second_exam;
      // Ask the user to enter in the score for the final exam.
  cout << "nPlease enter in the score for the final exam: ";
      // This value is read in and saved.
  cin >> final_exam;
  // Store the homework scores in a vector.
  // Uses the push_back function to add each homework score to the vector.
  // Then asks the user to enter in the scores for the homework assignments. 
      // Any number of scores can be entered in. 
  // When done, the user signals completion by pressing Ctrl-z (the Ctrl key 
      // and the letter z) followed by the Enter key.
  cout << "nEnter the score for a homework assignment(press ctrl-z to quit): ";
  cin>>aHomework;
  while (!cin.eof()) // No Ctrl-Z
  {
     if (cin.good()) // The data entry was valid, i.e., an integer
     {
     homework.push_back(aHomework);
     }
     else
     {
     // The failbit was set, so this entry must be invalid.
     cout << "Invalid entry!" << endl;
     cin.clear(); // clear error flag
     cin.sync(); // Re-sync stream
     }
     // Get next data entry
     cout << "nEnter the score for a homework assignment(press ctrl-z to quit): ";
     cin>>aHomework;
     }  
     median = CalcScore( &homework);
     cout << endl;
     system("PAUSE");
     return 0;
     }// End main
     double CalcScore(vector<double> homework)
     {
     double median = 0;
     const int TWO = 2;
     size_t size = homework.size();
     sort(homework.begin( ), homework.end( ) );
     if (size  % TWO == 0)
     {
     median = (homework[size / TWO - 1] + homework[size / TWO]) / TWO;
     }
     else 
     {
     median = homework[size / TWO];
     }
     return median;
   }

解决此错误的任何帮助都会很棒谢谢尼尔

你声明

double CalcScore(vector<double> *);

但从未实施过。您实现了:

double CalcScore(vector<double> homework)

此外,将函数声明/定义移到main之外。