Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Classen function in classen function

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 <
000
31.10.2007, 21:47 Uhr
~Cpluslpus neuling
Gast


hey erstmal

ich hab ma ne frage zu den classen.
und zwar versuche ich eine classenfunction, in einer anderen Classenfunction der selben classe aufrufen.

Der Code erklärt das glaub ich besser :

C++:
#include <iostream>
using namespace std;

class CTest
{
private:
    int Test;
    void show();
public:
    CTest();
    void zeigedaten();

};
CTest::CTest()
{
    int Test = 5;
}


void CTest::show()
{
cout<<Test<<endl;
}
void CTest::zeigedaten()
{
    CTest Player;
    Player.show();
}

int main()
{
    CTest Player;
    Player.zeigedaten();
}





ich hoffe das ihr versteht was ich möchte. Der oben stehende code functioniert nicht ... meine frage : warum. und wie umgeh ich das. bitte keine fragen zum sinn des ganzen denn muss ich schon selber kennen :P ... danke schonmal für eure hilf
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.10.2007, 22:43 Uhr
0xdeadbeef
Gott
(Operator)


In der Klassenmethode hast du doch bereits ein CTest-Objekt (Ich würde übrigens meine Klassen nicht generell mit C am Anfang bezeichnen, das ist belegt durch den MFC-"namespace" aus Vorstandardzeiten)

C++:
void CTest::zeigedaten()
{
    show();
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.10.2007, 22:59 Uhr
~Cpluslpus neuling
Gast


danke für die schnelle antwort hat geklappt :P

ja ich benutze des C aber ^^ steht in meinem buch, also werde ich das auch weiter so verwenden . is ja auch mein problem denke ich . trotzdem danke für denn tipp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.10.2007, 23:09 Uhr
0xdeadbeef
Gott
(Operator)


Klingt nicht nach einem besonders vertrauenswürdigen Buch...Titel?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.11.2007, 00:53 Uhr
~Cpluslpus neuling
Gast


C++ Für Spieleprogrammierer von Heiko Kalista erschienen im Hanserverlag.



kann mir nochmal wer genau erklären warum das mit dem C davor überflüssig oder weniger gut is? so ganz is mia das nich bewusst geworden mit dem MFC namespace usw XD is mia viel zu hoch ... was is ein MFC und was heißt das belegt?...

mfg ein neuling
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.11.2007, 01:21 Uhr
xXx
Devil


MFC ist die Microsoft Foundation Class ... in etwa eine Kapselung der WinAPI in C++. Um es vereinfacht auszudrücken ...

Das C wird von Microsoft bei der MFC als Einleitung eines Klassennamens genutzt. Guck dir am einfachsten mal die Ungarische Notation an und die Microsoft Version davon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.11.2007, 01:33 Uhr
0xdeadbeef
Gott
(Operator)


Die C-Geschichte stammt aus der Zeit, bevor C++ standardisiert wurde und namespaces von vielen Compilern nicht unterstützt wurden. Damals hat man oft vor den eigentlichen Namen der Klasse einen eindeutigen Bezeichner für die Bibliothek gesetzt - so zu sehen bei z.B. wxWidgets, wo alle Klassennamen mit wx beginnen, oder Qt, wo alle Klassen ein Q vor dem eigentlichen Namen haben. Inzwischen gibt es namespaces, die da deutlich flexibler sind, so dass eine moderne Bibliothek stattdessen z.B. wx::symbolname bzw. qt::symbolname benutzen würde. C ist eine Art namespace für die MFC (Microsoft Foundation Classes), und du möchtest den selben namespace nicht für zwei verschiedene Bibliotheken benutzen - die Gefahr, da Kollisionen zu kriegen, ist zu groß. Selbst wenns jetzt funktioniert, wird die Bibliothek evtl. irgendwann um eine Klasse erweitert, die mit deinem Code kollidiert.

Nebenher ist das C bei Microsoft eine Art der ungarischen Notation - sie benutzen C für Klassen, I für interfaces, und lpsz für String-Arrays, solche Dinge. Eine Zeit lang war es mal modern, sowas zu machen, um direkt sehen zu können, welchen Typ ein bestimmtes Symbol hat, aber in der Praxis hat sich das relativ schnell als unpraktisch erwiesen - zum Beispiel unter dem Gesichtspunkt von templates, hauptsächlich aber aufgrund der Lesbarkeit; logisch interessiert dich eigentlich nicht, welchen Typ ein Symbol genau hat, du willst beim Lesen des Codes wissen, wozu es gedacht ist. Und

C++:
for(int nIndex = 0; nIndex < 10; ++nIndex) {
  DoStuffWith(lpszArray[nIndex]);
}


wirkt auf die meisten Leute eher konfus. Das selbe Konzept trifft hier auch auf Klassen zu - wenn ein Klassenname im Code steht, weißt du bereits, dass es ein Typname ist, der Bezeichner ist redundant und verwirrt den unbedarften Codeleser eher, als dass er die Lesbarkeit erhöht.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.11.2007, 20:52 Uhr
~Cpluslpus neuling
Gast


Danke für die Ausführlich erklärung
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: