2014-02-28 83 views
-5

我的代碼,目前來了與它在StackOfBoxes.cpp的40行發現編譯錯誤。該錯誤是一個未定義的引用錯誤:爲什麼我會得到一個未定義的引用錯誤

StackOfBoxes.cpp:40: undefined reference to Box::Box();

我不知道怎麼做才能做調試。任何幫助將不勝感激。

bool StackOfBoxes::isEmpty() const 
{ 
    if (m_size == 0) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

int StackOfBoxes::size() const 
{ 
    return m_size; 
} 

void StackOfBoxes::push(int value) 
{ 
    Box* box = m_top; 
    m_top = new Box(); 
    m_top->m_value = value; 

    m_top->m_previous = box; 
    // increase m_size by 1; 
    m_size += 1; 
} 

int StackOfBoxes::pop() 
{ 
    // Create a Box pointer (Box* temp) and store the value of m_previous using m_top 
    Box* temp = m_top->m_previous; 

    // Similarly store the m_value using m_top into the Integer variable 
    int x = m_top->m_value; 

    // Delete top of the stack 
    delete m_top; 

    // make the current Box pointer your new m_top 
    m_top = temp; 

    return x; 
} 
+3

哪一行是40行?爲什麼你的代碼從一個大括號開始?請修改您的標題,它在一個詞的中間被切斷。 – Barmar

+0

歡迎來到SO!我認爲你需要提供完整的代碼,最好是一個暴露錯誤的最小例子。 –

+1

我打算出去走一走,猜測你在一個單獨的文件中聲明瞭Box類,並且沒有在StackofBoxes.cpp中包含「#include」Box.h「'。如果是這種情況:將Box類的聲明放在.h文件中,並將其包含在你的cpp文件中。 –

回答

1

我猜這是第40行m_top = new Box();這個錯誤的可能原因是你沒有定義默認的構造函數。

2

我的猜測是,你已經宣佈盒構造是這樣的:

class box { 
public: 
    box(void); 

}; 

但後來沒有去上這樣定義構造函數:

box::box(void) 
{ 
    .... 
} 

要麼,該文件ISN沒有鏈接。

相關問題