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.



  • @BigNeal:

    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


Anmelden zum Antworten