Ich habe Probleme mit dem Stapeln von Werten für ein Deque-Objekt, das in einem Vorlagenklassenstapel definiert ist. Beim Initialisieren eines Klassenstapelobjekts und Verwenden der push_back() -Memberfunktion der STL-Deque-Klasse für das initialisierte Objekt und Lesen der Anzahl von Elementen innerhalb des Stapels werde ich Null, aber das Terminal sagte mir, dass es Werte hinein geschoben hat. Es sieht aus wie folgt:C++: Verwenden von Deque-Elementfunktionen innerhalb eines Klassenstacks
Stapel-Header-Datei
#ifndef STACK_HH
#define STACK_HH
#include <iostream>
#include <deque>
template<class T>
class Stack {
public:
Stack(): s() { // <-- creating an empty deque s
s.size() ;
nitems() ;
empty() ;
}
~Stack() {
nitems() ;
empty() ;
}
//Member functions
int nitems() { return s.size() ; }
bool empty() { return (s.size()==0) ; }
void push_back(T c) {
s[s.size()] = c ;
}
T back() {
return s[s.size()] ;
}
void pop_back() {
if (empty()) {
std::cout << "Stack::pop() Error: stack is empty" << std::endl ;
}
}
private:
std::deque<T> s ;
};
#endif
Haupt Skript
#include <iostream>
#include <deque>
#include "Stack.h"
using namespace std ;
// Main
int main() {
int LEN = 10;
Stack<double> s ;
// Write doubles into Stack
for (int i=0 ; i<LEN ; i++) {
cout << "pushing value " << i*i << " in stack s" << endl ;
s.push_back(i*i) ;
}
// Count doubles in fifo
cout << s.nitems() << " value(s) in stack" << endl ;
return 0 ;
}
ich mich gefragt, ob ich die deque push_back() definieren sollte, zurück() und pop_back() funktioniert anders in meiner Stack-Header-Datei. Etwas wie void deque < T> :: push_back() und ähnlich für die anderen. Aber das hat es nicht gelöst, da ich bereits erwartet hatte, dass s.pushback() auch nicht funktionierte.
Jede Hilfe bei der Lösung dieses Problems wird gerne angenommen.
EDIT:
Vielen Dank für die Hilfe.