在派生 class 中覆盖 C++ 模板函数
Overriding C++ template function in derived class
我正在尝试编写一个堆栈 returns O(1) 中堆栈的最小元素,因为我正在使用派生的 class 但没有成功。尝试从派生 class 调用基础 class 的函数时出现错误。如果您可以查看代码并提供有关如何修复它的任何意见,我们将不胜感激。错误截图:http://imgur.com/PhoNRpq
#include<iostream>
#include<cstdlib>
#include<stack>
using namespace std;
#define MAX 999999
int findmin(int a, int b)
{
if (a < b)
return a;
return b;
}
class nodeWithMin
{
public:
int val, min;
nodeWithMin(int x, int y)
{
val = x;
min = y;
}
};
class myStack : public stack<nodeWithMin>
{
public:
void push(int dat)
{
int newMin = findmin(dat, stackMin());
stack<nodeWithMin>::push(new nodeWithMin(dat, newMin));
}
int stackMin()
{
if (this->empty())
return MAX;
else
return this->top().min;
}
};
你需要改变这个:
stack<nodeWithMin>::push(new nodeWithMin(dat, newMin));
至:
stack<nodeWithMin>::push(nodeWithMin(dat, newMin));
我正在尝试编写一个堆栈 returns O(1) 中堆栈的最小元素,因为我正在使用派生的 class 但没有成功。尝试从派生 class 调用基础 class 的函数时出现错误。如果您可以查看代码并提供有关如何修复它的任何意见,我们将不胜感激。错误截图:http://imgur.com/PhoNRpq
#include<iostream>
#include<cstdlib>
#include<stack>
using namespace std;
#define MAX 999999
int findmin(int a, int b)
{
if (a < b)
return a;
return b;
}
class nodeWithMin
{
public:
int val, min;
nodeWithMin(int x, int y)
{
val = x;
min = y;
}
};
class myStack : public stack<nodeWithMin>
{
public:
void push(int dat)
{
int newMin = findmin(dat, stackMin());
stack<nodeWithMin>::push(new nodeWithMin(dat, newMin));
}
int stackMin()
{
if (this->empty())
return MAX;
else
return this->top().min;
}
};
你需要改变这个:
stack<nodeWithMin>::push(new nodeWithMin(dat, newMin));
至:
stack<nodeWithMin>::push(nodeWithMin(dat, newMin));