2015-10-19 79 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