# Borland c++ Builder



## js-mueller (16. April 2003)

Hi

ich möchte gerne eine eigene Klasse schreiben. Die .h und .cpp hab ich fertig. Nun möchjte ich das ich die Klasse benutzen kann. Doch ich kann die funktionen der klasse nicht verwenden.
Muss ich die .h und .cpp der klasse irgendwie verbinden oda so?


----------



## Dario Linsky (16. April 2003)

Beim C++ Builder ist das normalerweise so gelöst, dass man die Klasse selbst in der Headerdatei (klassenname.h) speichert und die eigentliche Implementierung der Methoden für die Klasse in die Datei mit dem Code (klassenname.cpp).
Damit die Datei für den Code aber auch weiss, welche Klasse gemeint ist, musst Du die Klasse natürlich auch noch in der *.cpp-Datei einbinden:

```
#include <klassenname.h>
```

Dann hast Du aber gerade mal die Klasse.
Wenn Du noch Instanzen (Objekte) von der Klasse in anderen Dateien benutzen willst, musst Du natürlich auch noch die Implementierung der Klasse einbinden:

```
#include <klassenname.cpp>
```
(Die Headerdatei brauchst Du hier nicht mehr einbinden, weil diese durch den Präprozessor schon mit in die Implementierung geschrieben wird.)


----------



## Tobias K. (16. April 2003)

moin


also du musst der cpp wenigstens sagen wie die hpp heisst!


mfg
umbrasaxum


----------



## js-mueller (16. April 2003)

In der cpp steht #include "vok.h"
aber es funktioniert nicht. Oder speicher ich die sachen vieleicht im falschen ordner? Wo müssen die sachen den hin dmait se funktionieren


----------



## Dario Linsky (16. April 2003)

Sieh Dir doch einfach mal an, wie der Builder ein Formular (ist ja auch nur eine Klasse) im Code verwendet und wo die entsprechenden Dateien gespeichert sind.


----------



## js-mueller (16. April 2003)

Ich hab mir das mal angeguckt, aber ich weiss net wo ich die speichern soll. Ich habe die windows suche benutzt, die hat aber nicht die datei angezeigt. Es gab zwar unit1.h und unit1.cpp aber die gehörten zu examples und hatten nicht den gleichen inhalt wie die datei die ich im Builder hatte


----------



## Dario Linsky (16. April 2003)

Hast Du die Dateien auch vorher gespeichert? Sonst ist es doch logisch, dass die nicht auf der Festplatte vorhanden sind...


----------



## js-mueller (16. April 2003)

Bin ja nicht doof 
Gespeichert hab ich das.

edit:

Ich hab noch nen bissle rumgetestet und wenn die die .h und de .cpp im gleichen verzeichniss wie das eigentliche Programm liegen, dann funktioniert es.
Doch wenn ich dann Vok test; mache sagt er mir " Vok undifiniertes Symbol".
Die Klasse heisst Vok und wieso sollte dies jetzt nicht gehen?

edit2:

und wenn ich im quelltext Vok::ausgabe(); aufrufe bekomme ich folgende meldung 
"[C++ Fehler] File1.cpp(7): E2090 Qualifizierer 'Vok' ist kein Name einer Klasse oder einer Struktur"

Ich weiss net wieso. In der linken spalte wird mir die klasse doch angezeigt


----------



## js-mueller (18. April 2003)

Hi

Mein Problem ist leider immernoch nicht gelößt ;-) Es wäre nett wenn jemand mir helfen könnte, der auch selbst erfahrungen mit borland gesammelt hat.


----------



## bitmaster (21. April 2003)

Im Notfall muss du die Klasse im Hauptquellcode reinpacken.
Ich weiss nicht ob es oben schon gepostet wurde, aber so würde 
es warscheindlich auch gehen:

main.cpp:

#include "vok.h"

...
 


vok.h:


#include "vok.hpp"

// Deklerationen

...
 


Natürlich müssen die Klassendateien(vok.h und vok.hpp) im gleichen
Verzeichniss sein wie das Projekt. Wenn dass nicht funktionieren sollte, dann includiere die vok.hpp nach den Deklerationen ein!


----------



## Daystalker (9. September 2003)

*Selbe Prob*

Hi Leutz,

mir ist eben das selbe wiederfahren.

Habe eine eigene Klasse erstellt und jetzt sagt er mir auch:

[C++ Fehler] Prg.cpp (123): E2090 Qualifizierer 'Klasse' ist kein Name einer Klasse oder einer Struktur

Dabei ist sind die Angaben genauso korrekt wie die anderen ca. 20 Methoden auch.

Was ich "weiß" ist, daß man bei der Klassenerstellung die Dateien (Header- und Source-Datei) gleich "betiteln" muß. Sprich Klassenname.cpp und Klassenname.h geht während Klassenname.cpp und NameDerKlasse.h Probs bereitet.

Aber selbst das ist bei mir Bestens...  

Also, ich werd weiterbasteln und hoffentlich eine Lösung finden, dann werde ich die Lösung hier posten!

In diesem Sinne...


Daystalker


----------



## Daystalker (11. September 2003)

*(Mein) Prob gelöst*

Hi Leutz,

ich hatte bei der Deklaration der Methode nicht

void TKlasse::Methode()

verwendet sonder statt dessen

void Klasse::Methode()

Das war - logischerweise - falsch!

Begründung:
Da man nur Methoden von ->Klassen<- festlegen kann und nicht von bereits allokierten ->Objekten<- konnte das ja nicht gehen.

Jetzt habe ich - kurzum (so wie ich es auch wollte!) - die Methode der Klasse zugewiesen und schon funzts (=funktionierts).  

In diesem Sinne...


Daystalker


----------

