2015-10-19 82 views
0

我寫了一個小程序,它接受用戶輸入並創建鏈接列表。我在構建時遇到了一個錯誤,這似乎與HeadPointer傳遞到打印函數有關。錯誤如下:未定義對鏈接列表的引用打印功能

undefined reference to `PrintList(PetData*)'| 
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===| 

如果任何人都可以點(PUT並非意)我在正確的方向,甚至明確地給我修復我真的很感激它。 源代碼:

#include <iomanip> 
#include <string> 
#include <iostream> 


using namespace std; 

struct PetData{ 
    int IdNumber; 
    string PetType; 
    PetData *link; 
}; 

PetData * HeadPointer=NULL; 

void InsertItem(int, string, PetData*); 

void PrintList(PetData*); 

int main(){ 
    int init_IdNumber; 
    string init_PetType; 
    PetData * CRP = NULL; 

    char cflag = 'Y'; 
    while (toupper(cflag) == 'Y'){ 
     cout << "Please Enter an ID Number: " << endl; 
     cin >> init_IdNumber; 

     cout << "Please Enter a Pet Type: " << endl; 
     cin >> init_PetType; 

     CRP = new PetData; 

     InsertItem(init_IdNumber,init_PetType,CRP); 
     HeadPointer=CRP; 

     cout << "Would you like to enter another? (Y/N)" << endl; 
     cin >> cflag; 


    }; 


    PrintList(HeadPointer); 



    return 1; 
}; 

void InsertItem(int init_IdNumber, string init_PetType, PetData* CRP){ 
    CRP->PetType = init_PetType; 
    CRP->IdNumber = init_IdNumber; 
    CRP->link = HeadPointer; 
}; 

void PrintList(){ 
    while(HeadPointer != NULL){ 
     cout << HeadPointer->PetType << "\t" << HeadPointer->IdNumber << endl; 
     HeadPointer = HeadPointer->link; 
    } 

}; 

在任何人提起這件事,這不是一個家庭作業。這是我的教授建議我們獨立創建的,爲未來的中期任務做準備。

謝謝!

+1

爲什麼全局變量?那是你教的嗎? –

回答

2

函數聲明和定義不匹配。

函數的原型是 void PrintList(PetData*);並且定義是void PrintList()。這就是它不匹配的原因。

有校正碼

void PrintList(PetData* HeadPointer){ 
    while(HeadPointer != NULL){ 
     cout << HeadPointer->PetType << "\t" << HeadPointer->IdNumber << endl; 
     HeadPointer = HeadPointer->link; 
    } 
+0

非常感謝!愚蠢的疏忽對我來說。 – FantasticSponge

+0

@FantasticSponge歡迎您。請接受答案,如果它解決了您的問題 – knightrider

+0

選擇它之前讓我等幾分鐘。我不會忘記。 – FantasticSponge