STL stack in C++ Klasse erzeugen
Aproxy 22.05.2006 - 12:19 963 3
Aproxy
Little Overclocker
|
Hi, möchte einen STL Stack in einer C++ Klasse new Methoden verpassen. Aber aus irrgendeinem Grund - wirft der Compiler einen Error und kann den Stack nicht erzeugen. (Wenn ich aber z.B. in main den Stack erzeuge und funktioniert das ganze einwandfrei) h-file:
=======
#ifndef __STACK__
#define __STACK__
#include <stack>
using std::stack;
class Stack
{
private:
typedef std::stack <double> stackType;
stackType new_stack;
public:
Stack();
virtual ~Stack();
virtual void PUSH(double);
virtual double POP(void);
virtual int NumberOfElements(void);
};
#endif
cpp - file:
===========
#include "stack.h"
using std::stack;
Stack::Stack()
{
}
Stack::~Stack()
{
}
void PUSH(double topush)
{
new_stack.std::stack::push(topush);
}
double POP(void)
{
double return_value;
return_value = new_stack.top();
new_stack.pop();
return( return_value );
}
int NumberOfElements(void)
{
return( new_stack.size() );
}
================== was muss ich ändern damit der Compiler den Stack hier erzeugen kann. mfg
Bearbeitet von SYSMATRIX am 22.05.2006, 16:49 (code in entsprechende tags eingebettet.)
|
SYSMATRIX
Legend Legend
|
gibt es auch einen rationalen grund warum um std::stack herumwrappst und daß dann auch nur mit doubles?! sag bloß nicht daß dich bei pop() der void return type gestört hat daß man top() und pop() nacheinander aufrufen muß.
denkst du nicht daß es für uns interessant wäre zu sehen welchen compiler output du da kriegst?
|
Aproxy
Little Overclocker
|
Das sollte nur Beispielhaft sein - in diesem Fall hat das wirklich nur wenig sinn - aber es funktiniert auch nicht mit STL List oder Vektor - wo ich dann das ganze für meine Zwecke ein wenig angenehmer gestalten könnte. Nochmal zu eigentlichen Problem: Warum wird new_stack.xxxx() nicht vom Compiler in den Methoden erkannt. Compiler: Visual C++ 2005 und das gleiche Problem - Bloodsheed Dev-C++ (GCC) Output zur Zeile "new_stack.std::stack ush(topush); ": stack.cpp: `new_stack' undeclared (first use this function) Ich dachte dass das eher ein grundlegendes (Syntax) Problem ist.
Bearbeitet von Aproxy am 22.05.2006, 14:27
|
Luzandro
OC Addicted
|
schonmal blitzeinschlag ghabt? da geht gern mal das modem und evtl nt flöten ... festplatten sind auch nicht selten defekt und in nem oc-forum über defekte hardware zu lästern find ich
aber ich geb dir schon recht, RAM ist eins der dinge die bei mir auch noch nie defekt waren, obwohl ich die früher (in meiner unwissenheit) sogar am teppichboden liegen ghabt hab
weil die klasse nicht angegeben ist und er somit kein new_stack kennt void Stack::PUSH(double topush) in code-tags wär das ganze übrigens bisl besser zu lesen und ohne smiley
|