c ++以向量作为参数调用函数

时间:2012-10-14 16:05:34

标签: c++

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

错误:

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:\Users\Neil Armstrong\Desktop\practice\Debug\practice.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;
   }

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

1 个答案:

答案 0 :(得分:1)

你宣布了

double CalcScore(vector<double> *);

但从未实施过。你实施了:

double CalcScore(vector<double> homework)

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