2015-10-20 89 views
0

嗨,我读了关于未定义引用的其他问题和答案。但仍然无法找出我的代码有什么问题。我有一个简单的链表列表代码,其中我将整数添加到尾部,然后显示它们。这里是我的代码 “head.h”未定义的函数引用(链接器错误)

#ifndef __HEAD_H_INCLUDE 
#define __HEAD_H_INCLUDE 

class Node { 
int info; 
Node *next; 
}; 

class imple { 
public: 
    imple(); 
    void addToTail(int); 
    void display(void); 
private: 
    Node *head,*tail; 
}; 

#endif 

“implementaion.cpp”

#include<iostream> 
#include "head.h" 

imple::imple(){ 
head=tail=0; 
} 

void imple::addToTail(int key){ 
if(tail==0) 
    {tail=head=new Node(); 
    info=key;next=0;} 
else 
{ 
    tail->next=new Node(); 
    info=key;next=0; 
    tail=tail->next; 
} 
} 

void imple::display(){ 
Node *temp; 
for(temp=head;temp->next !=0;temp=temp->next) 
{ 
    std::cout<<temp->info << " "; 
} 
} 

“的main.cpp”

#include<iostream> 
#include "head.h" 

int main(){ 
Node node; 
imple ab; 
for(int i=0;i<5;i++) 
ab.addToTail(i); 
ab.display(); 
} 

每次我编译我得到这个错误

“/tmp/cc20Z1ZH.o:功能main': lmain.cpp:(.text+0x10): undefined reference to imple :: imple()' lmain.cpp :(文字+ 0x2a):未定义参考imple::addToTail(int)' lmain.cpp:(.text+0x45): undefined reference to imple ::显示器()” collect2:LD返回1个退出状态”

您的答案和建议,将有助于

+0

链接在一起你怎么编?什么是编译命令行? – fritzone

+3

你的命令行是什么样的?你真的在编译'implementationaion.cpp'吗? –

+0

使用g ++ main.cpp – Hemanth

回答

3

总之,你可以使用

g++ main.cpp implementation.cpp -o out 

您需要在构建过程中包含implementation.cpp并使链接器可以访问函数定义。也就是说,

g++ -c implementation.cpp -o implementation.o 

g++ -c main.cpp -o main.o 

编译它,并将其与

g++ main.o implementation.o -o out 
0

尝试使用

g++ main.cpp implementaion.cpp 

也许这将帮助

相关问题