WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 24.04.2006, 11:36   #1
Harika
Master
 
Registriert seit: 04.06.2004
Ort: Irland
Beiträge: 724


Standard Zugriff auf Stack klassenüberschreitend in C++

Hallo,
ich schreibe gerade an einem Stack auf dem ich doubleWerte rauflege und mit diesen hantiere. Nur stehe ich vor dem Problem das ich es nicht schaffe den Stack in anderen Klassen zu manipulieren es geschieht alles aus der main.cpp heraus, was nicht so toll ist.

TRStack.cpp
Zitat:
#include<iostream>
#include<stack>
#include "TRstack.h"
using namespace std;

stack<double> Example;

TRstack::TRstack(int N) // Stack initialisieren
{

//stack<double> N; Funktioniert nicht

cout << "Stack initialisiert" << endl;
}
TRStack.h
Zitat:
class TRstack
{

public:
TRstack(int);
bool TRempty(); // ist der Stack leer?
};
Main.cpp
Zitat:
#include "stdafx.h"
#include <iostream>
#include <stack>
#include "TRoperator.h"
#include "TRstack.h"

int _tmain(int argc, _TCHAR* argv[])
{
TRstack Example(0); //initialisieren
Example.TRempty(); //das funktioniert

}
(aufs Wesentliche beschränkt)

Ich würde nun gerne eine Klasse Operator schreiben in der ich auf den Stack mit Example.pop/push/top(); zugreifen kann. Sodass ich eine Addition in der Klasse Operator mit x1=Example.top(); ... x3=x1+x2 aufrufen kann. Bis dato mache ich das in der Main.cpp mit einem meines Erachtens zu verschachtelten Aufruf der so aussieht TRoperator::OPaddition(Example.TRtop(),Example.TRt op()) (Mir ist bewusst das er hier nur denselben Werte zweimal nimmt.) Wie kann ich das nun so ändern das ich eben einen Stack habe den ich vom ganzen Programm aus manipulieren kann?
Edit: Benutze Visual C++
Harika ist offline   Mit Zitat antworten
Alt 24.04.2006, 15:42   #2
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

Zitat:
Wie kann ich das nun so ändern das ich eben einen Stack habe den ich vom ganzen Programm aus manipulieren kann?
Stack außerhalb von Main vereinbaren (globale varialble) oder jeder Funktionen die zugreifen soll, eine Ref. darauf übergeben.
Biri ist offline   Mit Zitat antworten
Alt 24.04.2006, 18:34   #3
Harika
Master
 
Registriert seit: 04.06.2004
Ort: Irland
Beiträge: 724


Standard

Ich hab probiert: stack<double> Example; vor Main zu schreiben hat keinen Effekt. Und ich weiss ehrlich gesagt nicht wie und wo ich die Referenz setzen muss.
Harika ist offline   Mit Zitat antworten
Alt 25.04.2006, 10:20   #4
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

hi,

c++ is bei mir schon länger her, geht aber noch so halbwegs.
btw. der code hat zwar wenig sinn, aber das prinzip sollte dadurch klar sein:

Main.cpp:

PHP-Code:
#include "stdafx.h"
#include "stdafx.h"
#include <iostream>
#include <stack>
#include "TRStack.h"


int _tmain(int argc_TCHARargv[])
{
    
TRStackpExample = new TRStack(5); 
    
TRStackpExample2 = new TRStack(7);

    
bool empty = pExample->TRempty();

    
TRStack pResult = *pExample + *pExample2;
    
cout << pResult.testval;

    return 
0;

TRStack.h:

PHP-Code:
#pragma once
#include<iostream>
#include<stack>

using namespace std;

class 
TRStack
{
public:
    
// Varialbes
    
stack<doubleExample;
    
int testval;

    
// functions
    
TRStack(int n);    
    
bool TRempty(void);
    
TRStackoperator+(const TRStackr);
public:
    ~
TRStack(void);
}; 
TRStack.cpp:

PHP-Code:
#include "StdAfx.h"
#include "TRStack.h"
#include<iostream>
#include<stack>

using namespace std;

TRStack::TRStack(int n)
{
    
cout << "Stack initialisiert" << endl;
    
testval n;
}

TRStackTRStack::operator+ (const TRStackr

    
// do overloading as you like 
    // example
    
this->testval += r.testval;
    
    return *
this


bool TRStack::TRempty(void)
{
    return 
false;
}

TRStack::~TRStack(void)
{

blöde formatierung - es heißt natürlich, ohne Leerzeichen:

TRStack & TRStack :: operator + (const TRStack& r)

fg
hannes
Biri ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:25 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag