Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 21.10.2002, 15:28 Titel: Klassenbenutzung |
|
|
hi all!
Ich bin jetzt bei Kapitel 9 des Buches, bei dem man eine Klasse erstellen soll. Doch muss ich für eine Klasse eine Headerdatei erstellen und die includen oder ist das ein .cpp File? _________________ Greetz CorDharel |
|
Nach oben |
|
|
Hasenfuß Senior JLI'ler
Alter: 37 Anmeldedatum: 20.08.2002 Beiträge: 291
Medaillen: Keine
|
Verfasst am: 21.10.2002, 16:12 Titel: |
|
|
Hi!
Soweit ich weis kannst du beides machen. Allerdings find ich die Variante mit den Headerdateien viel übersichtlicher, also die Deklaration in ner header und die Definition in einer *.cpp. |
|
Nach oben |
|
|
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 21.10.2002, 16:44 Titel: |
|
|
Hi, man kann Klassen komplett in .cpp oder .h definieren oder man kann eine klasse auf eine .h und auf eine .cpp aufteilen, wenn man sich jedoch intensivst mit Klassen und Klassenstruktur beschäftigt liest man früher oder später, dass die Variante eine Klasse auf eine .h und eine .cpp aufzuteilen veraltete und heut zu Tage eigentlich kaum noch genutzt wird (also jetzt mal in der Profiszene).
Gruss Tarek |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 21.10.2002, 16:48 Titel: |
|
|
Dem muß ich energisch wiedersprechen, gerade ein Header ist doch dafür da, damit die Klasse in anderen Programmteilen bekanntgemacht werden kann, indem man den Header includiert. Wenn alles nur in *.cpp-Dateien programmiert wird, müssen Anderungen an einer Klasse in x Dateien geändert werden - was nicht gerade der Übersichtlichkeit zugute kommt.
Gerade in größeren Projekten kann man fast gar nicht auf Header verzichten.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 21.10.2002, 16:56 Titel: |
|
|
Ich stimme AFE zu... wo hast du das denn gelesen Apnik? Davon hab ich noch garnix gehört... _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Sören JLI Master Trainee
Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 21.10.2002, 17:26 Titel: |
|
|
Ja, ich kann auch nur afe und hazel zustimmen. Schliesslich wird es in der MFC AFAIK auch so gemacht! |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 21.10.2002, 17:35 Titel: |
|
|
Das wird nicht nur in der MFC so gemacht. Das wird generell so gemacht und wenn nicht, ist es ein sehr schlechter Programmierstil. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Sören JLI Master Trainee
Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 21.10.2002, 18:54 Titel: |
|
|
Achja, dann gibt's da auch noch das Common Files Framework, da wird's auch so gemacht! |
|
Nach oben |
|
|
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 21.10.2002, 20:03 Titel: |
|
|
Also wie ich das verstanden habe meint ihr ich sollte es mit Headerdatein + includen machen?! _________________ Greetz CorDharel |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 21.10.2002, 20:26 Titel: |
|
|
Am besten so:
Header
Code: |
#ifndef CFOO_H
#define CFOO_H
class CFoo
{
public:
Foo();
~Foo();
void BangBoomBang(),
private:
int m_Bar;
};
#endif
|
Cpp Datei:
Code: |
#include "CFoo.h"
CFoo::CFoo() : m_Bar(0)
{
}
CFoo::~CFoo()
{
}
void CFoo::BangBoomBang()
{
cout << "Schmierlaps, ein faustgroßer Einzeller \n";
}
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 21.10.2002, 20:48 Titel: |
|
|
Hi, ich greife auch immer auf Header zu, die Frage war aber, was möglich ist. Ich habe auch nirgends geschrieben, dass es sinnvoll ist eine Klasse in eine .cpp zu packen, aber dass es möglich ist. Ich schrieb nur, dass die Variante .h und .cpp veraltet ist. Außerdem habe ich mal gelesen, dass die Klassen und Strukturen die in einer .cpp definiert werden auch in einer .h genutzt werden können, die includiert wird.
Also man hat in der main.cpp einen struct _BspInt{ int i; };
und kann auf diesen auch in der .h zugreifen. Ich würde nie auf die Idee kommen meine Klassen in .cpp zu packen. Ich habe meine Klassen immer komplett in einer .h .
Gruss Tarek |
|
Nach oben |
|
|
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 22.10.2002, 07:21 Titel: |
|
|
Hmm was ist denn eigentlich der Unterschied einer DLL und einer Klasse? Beides sind doch Sammlungen von Funktionen? _________________ Greetz CorDharel |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 22.10.2002, 07:42 Titel: |
|
|
Eine DLL kann eine Sammlung von Funktionen sein, nicht jedoch zwingend nur aus einer Klasse. Desweiteren können Dynamic Link Librarys alle möglichen und unmöglichen Resourcen beinhalten, vom einfachen Mauszeiger bis hin zur kompletten AVI-Animation...
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
CorDharel Junior JLI'ler
Anmeldedatum: 15.10.2002 Beiträge: 73 Wohnort: Winterthur, Zürich, CH Medaillen: Keine
|
Verfasst am: 22.10.2002, 08:33 Titel: |
|
|
Aha thx!
Hmm aber funktionieren tut es immer noch nicht
Ich habe etwa diese Klasse (sie soll einen String den ich übergebe ausgeben)
Code: |
#include <stdio.h>
class Ausgabe
{
void gebeaus(char output)
{
printf("%s",output);
}
};
|
und ein Programm:
Code: | #include "ausgabe.h"
void main(void)
{
gebeaus("Ausgabe");
} |
Wie mach ich das nun richtig? _________________ Greetz CorDharel |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 22.10.2002, 08:55 Titel: |
|
|
Code: |
#include <stdio.h>
class Ausgabe
{
void gebeaus(char output)
{
printf("%s",output);
}
};
|
Das sollte doch wohl eher
Code: |
void gebeaus(char* output) // Soll ja ein String sein
{
printf("%s",output);
}
|
Außerdem kannst du in dem Fall auch direkt
printf(output);
schreiben.
Christian |
|
Nach oben |
|
|
|