2013-10-26 2 views
1

스택의 최소 요소를 추적하기 위해 minStack 클래스를 구현하려고합니다. 내 코드는 다음과 같습니다. 원래 스택을 업데이트해야하기 때문에 기본 클래스 Stack의 포인터를 사용하려고했으나 기본 클래스의 멤버 대신 기본 클래스의 포인터이므로 호출 방법을 모르겠습니다. 위해 컨테이너에서 일반적으로 하나가 도출하지 것 : 조언C++에서 기본 클래스의 포인터를 얻는 방법

int pop() 
{ 
    if (Stack::pop() == min()) { minS->pop(); } 
} 

void push(int item) 
{ 
    if (item <= min()) 
    { 
     minS->push(item); 
    } 
    Stack::push(item); 
} 

관련이없는 조각 : 당신은 기본 클래스의 함수를 호출 할 Stack::pop()Stack::push()를 호출 할 수 있습니다

class minStack: public Stack{ 
private: 
    Stack* minS; 
public: 
    int min()const{ 
     if(minS->top) 
      return minS->top->data; 
     return -1; 
    } 
    minStack(){ 
     minS = new Stack(); 
    } 
    int pop(){ 
     if (Stack::this->pop == min()) { //question here! 
      minS->pop(); 
     } 
    } 
    void push(int item){ 
     if(item <= min()){ 
      minS->push(item); 
     } 
     Stack::this->push(); //question here! 
    } 
}; 

답변

관련 문제