2011-12-09 4 views
1

세 클래스가 상속하는 기본 클래스가 있습니다. 이러한 하위 클래스가 함수에서 인스턴스화 될 때마다 함수가 본문에 들어감에 따라 스택 오버플로가 발생합니다. 그들은 처음부터 끝까지 인스턴스화 될 수 있습니다. 중요하지 않습니다. 함수 본문을 입력하자마자 스택 오버플로가 발생합니다. 클래스가 제거되면 함수는 정상적으로 작동합니다. 자식 클래스는 재정의 된 함수 하나와 그 생성자와 소멸자를 포함하지 않습니다. 생성자와 소멸자는 모두 비어 있습니다.함수 호출시 스택 오버플로 받기

얼마나 도움이 될지 모르지만 근본적으로 빌리는 것은 하위 클래스입니다. 함수 본문이 입력되면 스택 오버플로가 발생합니다. 리턴 0 전에 인스턴스화하더라도, 함수 본문을 입력 할 때 여전히 충돌합니다. 제거되면 프로그램이 정상적으로 실행됩니다. 나는 실제로 다른 함수 (main은 더 짧다)에서 빌려 오는 것을 선언하고 있지만, 그것이 어떤 함수로 배치 되든지 동일한 효과를 갖는다.

class Borrow : public Transaction 
{ 
public: 
    Borrow(); 
    virtual ~Borrow(); 


    virtual void perform(Customer *, Item *); 
}; 

대출 및 기타 하위 클래스는 동일합니다. 하나의 재정의 된 가상 함수가있는 빈 생성자 및 소멸자입니다.

수행의 구현이다 : 나는 당신의 함수가 재귀 것을 생각하고 당신이 전화를 멈추지 않을

void Borrow::perform(Customer *customer, Item *aMovie) 
{ 
    customer->addMovie(aMovie, "B"); 
} 
+2

코드를 표시하십시오. – Mahesh

+0

당신이 어떤 상대인지 알 수 있도록 몇 가지 코드를 알려주십시오. – StilesCrisis

+0

코드를 표시해야합니다. 설명에서 실수를 볼 수 없습니다. – Vlad

답변

1

UncleBens 덕분에 대형 객체가있는 클래스가 여러 번 인스턴스화되어 스택 오버 플로우가 발생한다는 것을 알 수있었습니다.

1

.

+0

재귀 함수 또는 메서드가 없습니다. eof()로 중지 된 파일에서 읽는 while 루프가 있습니다. – ShrimpCrackers