Problem mit Klassendefinition
-
Hallo
der Fehler klingt als würde in der CPP der Include des Headers fehlen.
Desweiteren solltest du die void weglassen, das ist alter C-Stil.bis bald
akari
-
hab die voids aus den Klammern usw. rausgenommen, bringt gar nix.
-
hab die eigene Header jetzt mal an die letzte Stelle gestellt, so dass vorher alles andere includiert wird, jetzt gehts, aber warum?
-
Welche Header hast Du sonst noch drin?
-
Hallo
ums nochmal konkret auszuschrieben
Der Header muß so aussehen// Include-Guards #ifndef PYRAMIDGROUP_H #define PYRAMIDGROUP_H class TPyramidGroup{ public: TPyramidGroup(); ~TPyramidGroup(); }; #endifund die Implementierung so
#include "PyramidGroup.h" TPyramidGroup::TPyramidGroup(){ }bis bald
akari
-
Ich würd prinzipiell das T vor dem Klassennamen weglassen, das ist das C von Borland. Oder wird es eine Komponente für den BCB?
Mach lieber nen eigenen Namespace drum.
-
ja tuts ja auch, nur jetzt hab ich in der .cpp die eigene Header an die letzte Stelle gestellt und jetzt funktionierts plötzlich...
-
Hi,
ich glaub #include Form1.h (also das eigentliche Fenster)
muss ganz oben stehen.Grüsse
-
hab ich mir auch immer gedacht, nur dann funktionierst nicht, warum auch immer es sind nur 2 Header eingebunden, die eigene und dann noch eine mit globalen Definitionen usw.
mfg
Tom
-
Schau dir mal die Include-Guards an, vielleicht sind die in den beiden Headerdateien ja gleich.
-
was genau meinst du mit Include Guards?
mfg
Tom
-
Die Dinger hier
/ Include-Guards #ifndef PYRAMIDGROUP_H #define PYRAMIDGROUP_H
-
achso, nein, ist nicht der Fall
mfg
Tom
-
Heiteres Fehlerraten.

Poste doch mal den anderen Header mit den global Defs
-
.cpp, wie sie funktioniert:
#include "control.h" #include "SolarPyramid.h".h:
#ifndef SolarPyramidH #define SolarPyramidH
-
Vielleicht fehlt ja auch nur irgendwo ein abschließendes Semikolon nach einer Klassen- / Strukturdeklaration. Oder ähnliches.
-
nö hab alles aus der Klasse rausgenommen und damit ich so zeugs nicht übersehen kann, wenn ich die Header wieder vertausch gehts nicht mehr, so gehts aber.
mfg
Tom
-
Wenn es nicht zu groß wird, kannst du ja die beiden Headerdateien mal posten sonst wird das hier nur ein weiteres Raten.
-
#ifndef SolarPyramidH #define SolarPyramidH #include <vcl.h> #include <fstream.h> #include "sensor.h" #include "SensorAnalog.h" #include "ZahlerEnergy.h" #include "Actuators.h" #include "DataStore.h" #include "filenames.h" #include "GraphStore.h" class TGroupedPyramidSystem { public: TPyramidSystem* PyramidSystem[PYRAMID_NUMBER_OF]; int FirstValid(void); int PreviousValid(int iShown); int NextValid(int iShown); int LastValid(void); int Number(void); bool IsConnected(void); public: TGroupedPyramidSystem(void); ~TGroupedPyramidSystem(void); void BackgroundAllocations(void); void WriteNameList(void); void RelaysOnHand(void); void LookForWizardDigitalEingange(void); void LookForWizardRelays(void); void LookForWizardSMT(void); void LookForWizardPT1000(void); void LookForWizardDataStorage(void); void LookForWizardAnalog(void); void AnalogBelegung(int,int,char*); void RelayBelegung(int,int,char*); void SensorBelegung(int,int,char*); void PT1000Belegung(int,int,char*); void InputBelegung(int,int,char*); void WriteSetupToFile(void); void Report(ofstream&); void Report(char*); void Control(void); void ForceToMode(int iMode,int iHoure=0); void DisableAllControlComponents(void); void DeleteAllControlComponents(void); };mfg
Tom
-
Hallo,
Bist du dir sicher, dass du diese ganzen anderen Headerdateien da drin brauchst? Versuche bitte das Einbinden von Headern in andere Header zu vermeiden. Viele Abhängigkeiten lassen sich durch Vorwärtsdeklarationen lösen. Das erhöht meist auch die Compilegeschwindigkeit. Schmeiss auf jedem Fall die fstream.h da raus. Die brauchst du da mit Sicherheit nicht. Wenn überhaupt, dann sollte man sowieso nur fstream (ohne .h) einbinden.
Die ganzen void in den parameterlosen Funktionen können auch weg. Das ist zwar kein Fehler, erschwert aber die Lesbarkeit.