Zeiger auf Objekt an Funktion übergeben
-
Hallo zusammen
folgendes Problem, ich baue mein Programm(Konsolenanwendung) auf Modulen auf, so habe ich ein Modul gemacht, um einen PA zu erstellen. dessen Header lautet:
#ifndef MODULNEWPA_H #define MODULNEWPA_H #include "MyHerdanlage.h" void newPA(MyHerdanlage* PAaktiv); #endiffunktioniert bisweilen alles tadellos.
erstelle ich nun ein zweites Modul mit einer andern Funktion, dessen Header folgendermassen lautet:#ifndef MODUL_TEST_H #define MODUL_TEST_H #include "MyHerdanlage.h" void testing(MyHerdanlage* PAaktiv); #endifentsteht beim compilieren folgende Fehlermeldung:
Fehler: ModulTest.h(5,26):'MyHerdanlage' cannot start a parameter declaration
Die Klasse MyHerdanlage:
#ifndef MYHERDANLAGE_H // Wächter #define MYHERDANLAGE_H #include "MyClasses.h" #include "MyGrill.h" class MyHerdanlage : public MyGeraet{ private: int nInduktionsfuss; MyInduktionsfuss* Induktionsfuss; int nGrill; MyGrill* Grill; public: MyHerdanlage(); MyHerdanlage(char PA[]); MyHerdanlage(int nindukt, int ngrill); void setnIduktionsfuss(int nindukt); int getnInduktionsfuss(); void setnGrill(int ngrill); int getnGrill(); ~MyHerdanlage(); }; #endifdie in der Klasse MyHerdanlage benutzten Klassen(auch diese besitzen Wächter, habe sie aber in diesem Post weggelassen):
class MyInduktionsfuss : public MyBaugruppe{ private: MyInduktionsmodul Induktionsmodul; MySpule Spule; int Belegung; public: MyInduktionsfuss(); MyInduktionsfuss(char art[],char bez[], char PA[], int i, bool test); void setBelegung(int Bel); int getBelegung(); };class MyGrill : public MyGeraet{ private: float Temperatur; public: MyGrill(); MyGrill(char art[],char bez[], char PA[], int i, bool test); void setTemperatur(float Temp); float getTemp(); };und
class MyGeraet : public MyBaugruppe{ protected: double U[6];//12,23,31,1n,2n,3n double I[6];//12,23,31,1n,2n,3n double P[7];//12,23,31,1n,2n,3n, bool net;// true = PP // false = PN public: MyGeraet(); MyGeraet(char art[], char bez[], char PA[], int i, bool test); void setU(double messwert, int i); void setI(double messwert, int i); void setP(double messwert, int i); double getU(int i); double getI(int i); double getP(int i); double getPsum(bool net); };->
class MyBaugruppe{ protected: char ArtNr[8]; char Bezeichnung[20]; char PANr[8]; char BuiltIn[8];// zuweisung zu Herdanlage int index; bool tested; public: MyBaugruppe(); MyBaugruppe(char art[],char bez[],char PA[], int i, bool test); void setArtNr(char art[]); char* getArtNr(); void setBezeichnung(char bez[]); char* getBezeichnung(); void setPANr(char PA[]); char* getPANr(); void setBuiltIn(char built[]); char* getBuiltIn(); void setindex(int i); int getindex(); };ich benutze Borland C++5.02 unter Windows Vista
für eine Hilfe wäre ich euch dankbar.
GreatWho
-
Da beide header semantisch identisch sind muss der Fehler wohl an der Stelle sein wo du sie einbindest. Zeig doch mal bitte deine main bzw. die .cpp wo modulnewpa.h (?) und modultest.h eingebunden werden.
-
relevanter Auszug aus der main.cpp:
#include "standart.h" // Sammelheader für header mit Funktionsdefinitionen #include "MyClasses.h" // Sammelheader für die Klassen char mainmenu(MyHerdanlage* PAaktiv); int main(){ _setcursortype(_NOCURSOR); char wahl; MyHerdanlage* PAaktiv= new MyHerdanlage; do{ wahl = mainmenu(PAaktiv); switch (wahl){ case '1' : newPA(PAaktiv);// Aufruf (ModulnewPA.h) break; case '2' : testing(PAaktiv);// Aufruf (Modultest.h) break; case '3' : clrscr(); ... }Sammelheader:
// StandartBibliotheken #include <iostream.h> #include <conio.h> #include <iomanip.h> #include <dos.h> #include <time.h> #include <fstream.h> #include <stdlib.h> // eigene Bibliotheken #include "Neunteufel.h" #include "hinti.h" // Module #include "ModulNewPA.h" #include "ModulTest.h"
-
OK...
Dummer Fehler....habe für den Sammelheader keinen Wächter wegen doppelter Deklarationen eingebaut.... man, hab ich da lange rumgesucht, und jetzt komm ich selber drauf...
aber Danke für die versuchte Hilfeleistung.
ist somit erledigt.
GreatWho