[英]how to get the pointer of base class in c++
我正在嘗試實現minStack類來跟蹤Stack的最小元素。 以下是我的代碼。 我嘗試使用基類Stack的指針,因為我需要更新原始堆棧,但是我不知道如何調用它,因為它是基類的指針而不是基類的成員。
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!
}
};
您可以調用Stack::pop()
和Stack::push()
來調用基類的函數:
int pop()
{
if (Stack::pop() == min()) { minS->pop(); }
}
void push(int item)
{
if (item <= min())
{
minS->push(item);
}
Stack::push(item);
}
一條不相關的建議:通常不會從容器中衍生出一個容器來制作像您這樣的容器適配器。 通常,您將與成員組成班級:
class min_stack
{
std::stack<int> stack_;
std::stack<int> min_;
public:
int pop() { /* ... */ }
void push(int n) { /* ... */ }
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.