"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

STL stack in C++ Klasse erzeugen

Aproxy 22.05.2006 - 12:19 963 3
Posts

Aproxy

Little Overclocker
Registered: Nov 2002
Location: earth
Posts: 82
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
Bearbeitet von SYSMATRIX am 22.05.2006, 16:49 (code in entsprechende tags eingebettet.)

SYSMATRIX

Legend
Legend
Registered: May 2000
Location: ~
Posts: 5020
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
Registered: Nov 2002
Location: earth
Posts: 82
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.
Bearbeitet von Aproxy am 22.05.2006, 14:27

Luzandro

OC Addicted
Avatar
Registered: Mar 2006
Location: 2482
Posts: 708
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
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz