2014-02-28 2 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

안녕하세요. 난 당신이 전체 코드를 제공해야합니다, 오류가 노출되는 최소한의 예제가 바람직합니다. –

+1

필자는 사지에 나가서 클래스 Box를 별도의 파일로 선언했으며 StackofBoxes.cpp에서 Box.h "를 포함하지 않았습니다."라고 추측합니다. 그렇다면 클래스 Box의 선언을 .h 파일에 넣고 cpp 파일에 넣으십시오. –

답변

1

이 줄은 40이라고 생각합니다. m_top = new Box();이 오류의 가능한 원인은 기본 생성자를 정의하지 않았기 때문입니다.

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

어느 쪽이든, 또는 해당 파일 ISN : 같은 생성자를 정의하는 데에 사라하지 다음

class box { 
public: 
    box(void); 

}; 

그러나 :

2

내 생각 엔 당신이 같은 생성자 뭔가 상자를 선언 한 것입니다

관련 문제