Header-Datei mit Klasse

K

Kwark

Moin Moin

Hab da folgendenden Programmausschnitt:
Hauptprogramm:

Code:
#include <iostream.h>
#include <stdlib.h>
#include <string.h>		
#include <fstream.h>	

#include <function>

void main()
{
	class funktion funktion;

	char Auswahl;

	cout <<"	Adressdatenbank Hauptmenue\n";
		
	cout <<"Auswahl:\n";
	cout <<"Neue Adresse hinzufuegen		1\n";	
	cout <<"Adresse suchen				2\n";	
	cout <<"Adresse entfernen			3\n\n";	
	cout <<"Programm-Ende				e\n\n";	
	
	do{
	cout <<"Sie waehlen Menuepunkt: ";
	cin >>Auswahl;

		switch(Auswahl)
		{
		case'1':
			funktion.adressehinzufuegen();break;
		case'2':
			funktion.adressesuchen();break;
		case'3':
			funktion.adresseentfernen();break;
		case'e':
			cout <<"Sie verlassen die Adressdatenbank\n";break;
		default:
			cout <<"Nochmal Waehlen\n";
		}
	}while((Auswahl!='1')&&(Auswahl!='2')&&(Auswahl!='3')&&(Auswahl!='e'));

	cout <<"-Programmende-\n";
}

Als eigene Header-Datei mit der Klasse "funktion" als Inhalt folgendes:

Code:
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <fstream.h>

class funktion
{
public:

void adressehinzufuegen()
{  
	
	char adresse.name;
	char adresse.Telefon;
	char adresse.PLZ;
	char weitere;

	ofstream out ("adressdb.dat", ios::out);

	cout <<"Neue Adresse zur Datenbank hinzufuegen\n";
	cout <<"_______________________________________\n\n";

	if(!out).....


Warum sagt der compiler in MVS6 C++ im Hauptprogramm <<include- Datei kann nicht geöffnet werden:'function':No such file or directory?
Ist die Klasse falsch eingefügt oder was vergessen worden?Es soll jedenfalls vom Hauptprogramm in die Header-Datei gewechselt werden, um verschiedene Programmpunkte auszuführen.
 
Zuletzt bearbeitet von einem Moderator:
Header-Dateien, die Du mit '#include <dateiname>' einbindest, werden standardmässig im eingestellten Bibliothekspfad für den Compiler gesucht. Eigene Dateien solltest Du mit '#include "dateiname"' einbinden, dann werden die im gleichen Verzeichnis wie die Projektdateien gesucht. Du kannst aber auch direkt einen vollständigen Dateinamen angeben: '#include "C:\verzeichnis\dateiname"'.
 
Kleine Anmerkung zu Headerdateien:
Man sollte grundsätzlich in Headerdateien die
#ifndef
#define

#endif
Preprozessor-Anweisungen reinschreiben:
Code:
#ifndef FUNKTION_H
#define FUNKTION_H
  .
  .
  //Code für die Headerdatei
  .
  .
#endif
Als Bezeichner sind beliebige alphanumersche Werte zulässig.
(allerdings darf das 1. Zeichen keine Ziffer sein)
Das ganze hat den Vorteil, das man die Headerdatei auch mehrmals im gleichen Projekt (in der gleichen Datei macht keinen Sinn) includieren darf.

Gruss Homer
 
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <fstream.h>

#ifndef FUNKTION_H
#define FUNKTION_H

class funktion();
{
public:

void adressehinzufuegen()
{

char adresse.name;
char adresse.Telefon;
char adresse.PLZ;
char weitere;

ofstream out ("adressdb.dat", ios::eek:ut);

cout <<"Neue Adresse zur Datenbank hinzufuegen\n";
cout <<"_______________________________________\n\n";

if(!out).....
};
#endif



Hab das nun soweit midifiziert, kriege aber beim Kompilieren des Hauptprogramms immer noch den Fehler das in der*.h Datei direkt hinter "class funktion();" der Funktionskopf fehlt-Parameterliste im alten Stil.Was ist daran denn nun noch nicht richtig?
 
Hinter class XXX gehört auch NIE ein () oder ein ;

Ich würde Dir einfach mal empfehlen ein paar Bücher über C++ zu lesen, da Du so am besten verstehst, wie man Klassen verwenden sollte.

Kleiner Hinweis am Rand: ich würde Funktionen von Klassen immer in eine eingene cpp-Datei auslagern.

MfG

Tobias
 
Zurück