2014-01-19 99 views
0

嘗試使用函數來查找向量的中值時,出現一些瘋狂的錯誤。我不完全確定是什麼導致了這些錯誤。運行函數時發生錯誤

  1. '錯誤1錯誤C2601: 'calcMed':本地函數的定義是非法的'

我試圖使用聲明爲

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

double calcMed(int, vector<int>& studentScores); 

// 

double homeworkMed = calcMed(vectorSize, studentScores); 

double calcMed(int vectorSize, vector<int>& studentScores) 
{ 
double median; 

    sort(studentScores.begin(), studentScores.end()); 

    median = studentScores[vectorSize/2]; 

    return median; 
} 

我知道,它的功能如果我有一個奇怪的矢量,但我只是想讓這第一個工作。任何幫助,將不勝感激。

刪除了「double calcMed(int vectorSize,vector & studentScores)」中的分號,現在我得到兩個不同的錯誤,它們都在函數名稱後面的行中。

的錯誤都發生在符合{

double calcMed(int vectorSize, vector<int>& studentScores) 
{ 
+0

您確定沒有涉及'calcAverage'嗎?給我們一個[最小完整的例子](http://sscce.org),我敢打賭問題會很明顯。 – Beta

+0

除非您嘗試在'main'中定義它,否則這是如何編譯的? – chris

+0

@chris它沒有。 CNR。 「P – WhozCraig

回答

0

鏈接器錯誤是說,它無法找到的calcAverage()的實現。您是否可以將calcAverage()重命名爲calcMed(),而不更新對此功能的任何調用?

要解決此錯誤,我會搜索您的代碼calcAverage(),並將它們重命名爲calcMed()或爲其提供實現。

+0

對不起,我複製了代碼後更改了向量名稱,我更新了錯誤 – user2781666

2
double calcMed(int vectorSize, vector<int>& studentScores); 
{ 
    double median; 

    sort(studentScores.begin(), studentScores.end()); 

    median = studentScores[vectorSize/2]; 

    return median; 
} 

定義中的函數簽名後面不應該有分號。將第一行更改爲 double calcMed(int vectorSize, vector<int>& StudentScores)

+0

謝謝,我刪除了該錯誤,並在{下一行中出現了另外兩個錯誤。我在問題 – user2781666

+0

中發佈了新錯誤您無法在'main()'中定義'calcMed'。它應該在'main()'之外聲明和定義。 –

+0

如果在'main()'之前,我感動了。我仍然有同樣的錯誤 – user2781666

0

對不起,我想通了。出於某種原因,我把這個函數放在我的main()中。將它從括號中移出後,解決了錯誤。感謝大家的幫助。

相關問題