2015-10-20 75 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 

也許這將幫助

相關問題