STL stack in C++ Klasse erzeugen

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/stl_stack_in_c_klasse_erzeugen_163332/page_1 - zur Vollversion wechseln!


Aproxy schrieb am 22.05.2006 um 12:19

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)

Code:
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


SYSMATRIX schrieb am 22.05.2006 um 13:39

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 schrieb am 22.05.2006 um 14:18

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:push(topush); ":

stack.cpp: `new_stack' undeclared (first use this function)


Ich dachte dass das eher ein grundlegendes (Syntax) Problem ist.


Luzandro schrieb am 22.05.2006 um 14:27

Zitat von Aproxy
Zitat von HitTheCow
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 :D

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




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025