C++ Builder kennt plötzlich Funktionen von Klassen nicht mehr
-
Hi leute!
Ich ärgere mich nun schon seit fast 3 Stunden mitm Borland C++ Builder 6 ab.
Folgendes:
Ich wollte eine meiner Klassen im Projekt um eine Funktion erweitern und hab dann eben unter public
bool Schnellaufladung(void);
eingetragen. Wenn ich die Header kompilier gehts auch noch.Nur als ich dann die cpp kompilieren wollte in der ich
bool TPyramidSystem::Schnellaufladung(void){...
}eingetragen hab funkts nicht mehr.
Habs mittlerweile an drei Rechnern ausprobiert bei allen das gleiche. Wenn ich aber nur die cpp und die .h zum kompilieren nehme ohne das ganze Projekt dann gehts?
Kann mir jemand weiterhelfen?
mfg
Tom
-
bool Schnellaufladung(void); void TPyramidSystem::Schnellaufladung(void){}Vergleiche mal die beiden Zeilen, fällt dir wirklich nichts auf?
-
Sorry da hab ich mich wohl hier im Forum vertippt!
Sonst würde er ja die cpp und header alleine wohl kaum ohne Fehler kompilieren, oder?
Hast du keine Idee woran das liegt?
Programmierfehler schließ ich aus, weil die cpp und h alleine ja fehlerfrei kompiliert werden.
mfg
Tom
-
Die Fehlermeldung beim kompilieren lautet:
(C++ Fehler) SolarPyramid.cpp(464): E2316 'TPyramidSystem::Schnellaufladung()' ist kein Element von 'TPyramidSystem'
-
wenn du ne vernünftige aussage haben willst, solltest du die Implementation und Deklaration von der Funktion per Copy&Paste hier reinstellen.
-
wenn du meinen Text wirklich gelesen hättest, dann wärst du auch auf die Idee gekommen, dass ich mich vertippt hab, außerdem hab ich das mittlerweile korrigiert.
Wenn du ne Idee hast, nur her damit.
-
Was erwartest du???
Nach deinen Aussagen ist alles richtig. Jedoch funktionieren Klasse in C++ im allgemeinen. Also kann das
Programmierfehler schließ ich aus
definitiv nicht stimmen, egal wo er jetzt nun liegt. Ohne weitere Infos kann keiner hier etwas dazu sagen. Nur die Fehlermeldung allein deutet darauf hin, dass die Methode nicht in der Klasse ist. Ursache sind meistens:
- Schreibfehler
- Falsche Rückgabe- oder Aufrufparameter.
-
ich hab in die Methode zum testen und ausschließen von Fehlern nur:
bool bSchnell=false;
return bSchnell;reingeschrieben.
mfg
Tom
-
Tom7 schrieb:
wenn du meinen Text wirklich gelesen hättest, dann wärst du auch auf die Idee gekommen, dass ich mich vertippt hab, außerdem hab ich das mittlerweile korrigiert.
wer sich einmal vertippt, kann sich an einer anderen Stelle durchaus auch wieder vertippen, oder?
ich bleibe bei meiner Meinung:
BigNeal schrieb:
wenn du ne vernünftige aussage haben willst, solltest du die Implementation und Deklaration von der Funktion per Copy&Paste hier reinstellen.
Tom7 schrieb:
Wenn du ne Idee hast, nur her damit.
Sorry, meine Kristalkugel ist diese Woche für Lotto ausgebucht. Ohne deinen Fehler rekonstruieren zu können, kann ich nur raten. Das ist aber leider wegen mangelnden Infos nicht möglich
-
Tom7 schrieb:
ich hab in die Methode zum testen und ausschließen von Fehlern nur:[...]
das bringt uns nicht weiter.. wichtig ist
1. Wie hast du die Funktion im Header Deklariert
2. Wie sieht der Funktionsrumpf in der Implementation aus
-
.h
class TPyramidSystem : public TMultiStore { // multistore for Variables only at present private: public: TAnalog* ApL; // Lux Fühler TAdvancedRelay* PpU; // Solar Collector Pump with clock only TMultiFunction* VpF; // Frostschutz Valve operating as a thermostat TMultiFunction* VpD[PYRAMID_NO_OF_LEVELS]; // level as Thermostat, Difference or Pyramid TStatisticSensor* Tp[13]; // all sensors TStatisticSensor* TpA; // Outside temperature Sensor TEnergyCounter* Zp; // Solar Collector Zahler TGraphData* DailyMonitor; // monitoring of Collector on a daily basis TGraphData* YearlyMonitor; // monitoring of Collector on a yearly basis public: TPyramidSystem(void); ~TPyramidSystem(void); bool IsConnected(void); void BackgroundAllocations(void); void WriteSetupToFile(void); void ReadSetupFromFile(void); void Control(void); bool PpUEnabled(void); void PpUControl(void); void VpFControl(void); void VpDControl(void); void Austritt(TLabel&); void Eintritt(TLabel&); void Report(ofstream&); void Report(char*); void RelaysOnHand(void); void RelayBelegung(int,int,char*); void SensorBelegung(int,int,char*); void PT1000Belegung(int,int,char*); void AnalogBelegung(int,int,char*); void InputBelegung(int,int,char*); void DisableAllControlComponents(void); void DeleteAllControlComponents(void); void LookForWizardDigitalEingange(void); void LookForWizardRelays(void); void LookForWizardSMT(void); void LookForWizardPT1000(void); void LookForWizardAnalog(void); void LookForWizardDataStorage(void); bool Schnellaufladung(void); friend class TKollektorSetupScreen; };.cpp
... bool TPyramidSystem::Schnellaufladung(void){ bool bSchnell=false; return bSchnell; } ...hab in die Fkt vorerst mal nicht mehr reingeschrieben um sonstige Fehler auszuschließen.
die Header wurde in der cpp richtig includiert sonst würde es ja mit den anderen Fkts nicht funktionieren.mfg
Tom