Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Klassen Talk

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
24.08.2004, 15:51 Uhr
cmos



Hallo,
nehmen wir man hat 2 Klassen, eine für
die Ausgabe, hier bloß cout, und die andere
addiert 2 Zahlen. Wenn nun die eine
Klasse die Zahlen addiert hat, wie Teilt sie der
anderen das Ergebnis mit, bzw. wie übergibt man
die Variable mit dem Ergebnis der anderen Klasse ?

Müssen die beiden Klassen voneinander wissen ?
Hat das was mit Vorwärtsdeklaration zu tun das
beide Klassen voneinander abhängig sind ?
Oder geht das alles viel einfacher ?

Gruß,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.08.2004, 16:12 Uhr
Pablo
Supertux
(Operator)


Die Klasse ist nur eine "Vorschrift" eiens Objektes. Also kann eine Klasse der anderen "nichts sagen", meiner Meinung nach. Ich würde sowas machen


C++:
class A
{
    public:
    B b;
     int add(int x, int y) { int z=x+y; b.added=true; return z; }
};



und


C++:
class B
{
    public:
    bool added;
    ....
};



ist das was du machen willst?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 24.08.2004 um 22:59 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.08.2004, 16:23 Uhr
virtual
Sexiest Bit alive
(Operator)


@Pablo
Du solltest mal auf Deine Variablennamen achten....
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.08.2004, 16:29 Uhr
0xdeadbeef
Gott
(Operator)


Es gibt an der Stelle mehrere Herangehensweisen. Die einfachste ist, es einfach an den betreffenden Stellen hintereinander hinzuschreiben, z.B:

C++:
int a, b;
adder my_adder;
my_adder.add(a, b);
std::cout << my_adder.result();


Die andere Möglichkeit wäre, das entsprechend zu kapseln:

C++:
void add_and_write_to_stream(int a, int b, std::ostream &os) { os << a + b; }

//...

add_and_write_to_stream(1, 2, std::cout);


Eine dritte, aber erst für kompliziertere Dinge sinnvolle Möglichkeit sind signals. Dafür schau dir am besten mal www.boost.org/doc/html/signals.html an.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.08.2004, 17:01 Uhr
Pablo
Supertux
(Operator)



Zitat von virtual:
@Pablo
Du solltest mal auf Deine Variablennamen achten....


stimmt, hab den Fehler gesehen

--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.08.2004, 22:32 Uhr
cmos



@Pablo..

Du hast also eine neues Objekt in einer Klasse selbst geschaffen.
So kann ich dann also, wenn ich das in der anderen Klasse auch mache
mit einander kommunizieren.

@0xdeadbeef
Wenn ich das richtig lese beziehen sich deine Beispiele auf nur eine Klasse(?)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.08.2004, 08:57 Uhr
(un)wissender
Niveauwart


@cmos
Gewöhnt dir aber besser nicht Pablos Programmierstil, zumindest in C++, an.
Wenn sie miteinander kommunizieren sollen, wird es ein wenig komplizierter, da du hier entweder das Henne-Ei-Problem hast(Mit Objekten, lässt sich auflösen), oder Callbacks einsetzen musst.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.08.2004, 11:56 Uhr
cmos



Ich wollte mir bei SDL die Funktionen
in Wrapper KLassen setzen. Also eine Klasse die nur
erstmal ein Fenster erstellt und die andere(n)
die z.B sich um den Hintergrund kümmern bzw Sprites oder Bilder laden.
Das Problem ist nun das ja die andere(n) Klasse(n) wissen müssen
worauf sie zeichnen sollen.
In der einen Klasse steht beispielsweise

C++:
screen = SDL_SetVideoMode(640,480,16,SDL_HWSURFACE | SDL_DOUBLEBUF);



Jetzt wissen die anderen Klassen aber nicht das die auf screen zeichnen dürfen.
Das war eigentlich der ganze HIntergrund meiner Frage.

danke
cmos

Dieser Post wurde am 25.08.2004 um 15:11 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.08.2004, 21:05 Uhr
typecast
aka loddab
(Operator)


Damit reicht eine Funktion, die screen ausgbiebt:


C++:
int getScreen() { return screen; } // wobei ich einfach mal annehme, dass screen vom Typ int ist :-)


--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
31.08.2004, 15:19 Uhr
cmos



Hallo,
nee ist es nicht
Es ist SDL_Surface *screen und somit ein zeiger auf
die Struktur SDL_Surface.
Ich habs mit dem void* Probiert, hab jedenfalls mal gelesen
das man void auf jeden beliebigen Datentyp zeigen kann.
Leider funktioniert das nicht.

Jetzt hab in die eine header die andere Klasse eingebunden,
mit class also, so heißts bei mir im Buch, Vorwärtsdeklaration.
HAt auch soweit funktioniert aber es geht nicht.

Ich werd mal, wenn ich daheim bin, code posten.
Ich glaube da kann mir eher geholfen werden.

Gruß,
cmos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: