Ich versuche, meine eigene Klasse (NodeWithMin) als Elemente für den Stapel in C++ zu erstellen, und erstellen Sie eine neue Klasse (StackWithMin) erben. Ich denke, ich bin in Ordnung, die neue Stapelklasse zu erstellen, aber ein Problem zu haben, initialisiere eine neue Instanz der neuen Klasse und benutze sie. Hat jemand eine gute Idee damit? Ich habe alle Klassen und main in einer einzigen Datei geschrieben. Vielen Dank.C++ Erben Stack mit Elementen mit eigener Klasse
#include <stack>
class NodeWithMin{
public:
int value;
int min;
NodeWithMin(int v, int min){
this->value = v;
this->min = min;
}
};
template<class NodeWithMin>
class StackWithMin : stack<NodeWithMin>{
public:
typedef stack<NodeWithMin> super;
void push(int value){
int newMin = min(value, this->min());
super::push(new NodeWithMin(value, newMin));
};
int min(){
if(this->isEmpty()){
return numeric_limits<int>::max();
}else{
super::peek().min;
}
};
};
int main(int argc, const char * argv[])
{
StackWithMin<class NodeWithMin>* ss;
ss = new StackWithMin<class NodeWithMin>();
}
Lassen Sie einfach wissen, dass ich Ihren Code erfolgreich mit CodeBlock 12.11, gcc 4.7 – David
gebaut habe Können Sie genauer auf Ihre Probleme eingehen? Was funktioniert nicht? Gibt es Compiler-Nachrichten? Laufzeitfehler? –