2013-03-30 26 views
0

嗨,這是我第一次在這裏發佈,而且我對編碼比較陌生,所以我遇到了很多問題。大多數情況下,我可以自己學習如何解決錯誤,但現在我認爲我只是碰到了一個數組和結構的主要障礙。目前,編譯時它會給我對功能的undefine引用

undefined reference to `buildArrays(std::string, int, int, int)' 

的問題是,我把每一次我嘗試「修理」的主要功能buildArray主叫時有此錯誤,改變了串PlaName爲char PlaName [25]結構球員以某種方式工作,但不會改變錯誤。無論如何,我可以嘗試更改代碼,以便數組可能會從函數調用到另一個函數中?我查找的大部分信息都是關於連接器的,大多數都沒有幫助。

順便說一句,我的作業需要我從一個文件創建一個數組,從主函數中調用函數,並在主函數的其餘部分使用該數組。我不知道該程序是否有效,因爲我無法傳遞未定義的引用錯誤。這裏大多數的程序:

using namespace std; 

struct Players 
{ 
    string PlaName; 
    int PlaGoal; 
    int PlaAssist; 
    int Points; 
}; 

int buildArrays(string, int, int, int); 
void printArrays(string, int, int, int, int); 
void sortArrays(string, int, int, int, int); 

int main() 
{ 
Players player; 

    buildArrays(player.PlaName,player.PlaGoal,player.PlaAssist,player.Points); //this is the error 

    cout<<"Chicago Blackhawks UNSORTED Report;"; 


} 

int buildArrays(string playerNames[], int goals[], int assists[], int rating[]) //this function's format is required for the homework 
{ 
    ifstream inFile; 

    inFile.open("hockey.txt"); 
    if (inFile.fail()) 
     { 
     cout<<"The hockey.txt input file did not open"; 
     exit(-1); 
     } 

    while (inFile) 
     for(int i = 0; i <= 25; i++) 
     { 
     inFile >> playerNames[i] 
       >> goals[i] 
       >> assists[i] 
       >> rating[i]; 
     cout<<playerNames[i]<<goals[i]<<assists[i]<<rating[i]; 
     } 
     inFile.close(); 
     return 0; 
} 

回答

0

這個問題似乎是你的buildArrays函數原型不匹配你的函數定義。你的函數需要數組,但你的原型不使用數組語法。 更改您的原型是這樣的:

buildArrays(string[], int[], int[], int[]) ; 

而且你的main()函數需要陣列傳遞到buildArrays()函數。創建一個結構並傳遞每個成員是不夠的。如果您必須爲作業使用buildArrays()函數格式,您可能需要重新組織數據。也許爲每個玩家數據創建單獨的數組,然後在調用buildArrays()之後創建一個結構數組。

+0

是的,它現在有效,似乎結構是主要問題。也許有沒有可能的方法來保持buildArray中的參數和與編譯器相關的Player中的數據。謝謝您的幫助。 – user2226030