2014-04-10 229 views
0

你好小夥子,所以我試圖實現使用兩個隊列棧,但是,我遇到了一個問題,說對類my_queue引用沒有定義未定義參考

的錯誤(我只包括一些,因爲所有的都有未定義的參考)

my_stack.cpp:(.text+0x15): undefined reference to `my_queue::my_queue()' 
my_stack.cpp:(.text+0x25): undefined reference to `my_queue::my_queue()' 
my_stack.cpp:(.text+0x31): undefined reference to `my_queue::my_queue()' 
my_stack.cpp:(.text+0x3d): undefined reference to `my_queue::my_queue()' 
/tmp/ccNs1Fuy.o: In function `my_stack::push(int)': 
`my_queue::dequeue()' 

my_stack的代碼如下。另外我有兩個用於my_stack類和my_queue類的頭文件,但我認爲它們沒有錯誤。

#include<iostream> 
#include<vector> 
#include"my_stack.h" 
#include"my_queue.h" 

my_stack::my_stack(){ 
    my_queue q1; 
    my_queue q2; 

} 

void my_stack::push(int n){ 
    q1.enqueue(n); 
} 

int my_stack::pop(){ 
    for(int i =0; i<q1.size()-1; i++){ 
     int temp = q1.dequeue(); 
     q2.enqueue(temp); 
    }//dequeue every element in the q1 except the last element and enqueue to q2 
    int x = q1.dequeue();// dequeue the last item of q1 


    return x; 
} 

void my_stack::is_empty(){ 
    if(q1.size() == 0){ 
    std::cout<< "the stack is empty"<<'\n'; 
    } 

    else{ 
    std::cout<< "the stack is not empty"<<'\n'; 
    } 
} 

int main(){ 
    my_stack m; 
    m.push(4); 
    m.push(3); 
    int yo = m.pop(); 
    std::cout<<yo<<'\n'; 
    m.is_empty(); 

return 0; 
} 

謝謝你們,對於無組織的問題感到抱歉。

+0

就像它說的那樣,'my_queue :: my_queue()'沒有定義' –

+1

這是一個鏈接器錯誤。你如何編譯你的程序? – ooga

+0

需要看到頭文件 – jodag

回答

1

由於我們看不到頭文件,所以我在這裏做了一個假設,但看到了這些註釋,似乎您的鏈接器錯誤可能是由於未實現的函數。

我假設你的頭文件「my_queue.h」包含聲明而不是實現。你似乎缺少的是函數的實現,這就是你遇到鏈接錯誤的原因。 你有一些my_queue.cpp嗎?如果是這樣,那麼你應該鏈接它,否則你的程序不知道這些函數是實現的,但是,它有望使用它們。這就是連接錯誤的原因

+0

是的,我願意。是的,這只是一個鏈接錯誤。謝謝您的幫助 – MidTierDeveloper