Probleme mit klassen ...



  • aso entschuldigung hatte vergessen zu sagen habs auch in der .cpp datei geänder gehabt, in der .cpp steht auch get_standard!

    int Tmesswerte::get_standard()
    {
     int standard;
    
     return standard;
    }
    

    aber es tritt der fehler immer noch auf .. 😞



  • Hat sich denn auch die Fehlermeldung verändert?

    Wenn nicht, dann schau mal in der messwerte.cpp in der Zeile 111, ob da noch eine Tmesswerte::get_standardabweichung() definiert ist. Die gehört dann ja nicht dahin, weil wie die Fehlermeldung dir sagt, ist die Funktion get_standardabweichung() kein Element von Tmesswerte, sie ist ja nicht in der Klasse definiert. 🙂



  • Hm k, hab jetzt mal alles komplett raus geworfen, neu gemacht und die klasse nochmal neu deklariert.

    #ifndef class_messwerte
    #define class_messwerte
    
    #include <vcl.h>
    class Tmesswerte
    {   private:
    			  int *werte;
    			  int anzahl;
    	public:
    			  Tmesswerte();
    			  ~Tmesswerte(){};
    
    			  int get_minimum();
    			  int get_zahl(int);
    			  int get_anzahl(){return anzahl;};
    			  void set_anzahl(int);
    
    			  void add_zahl(int);
    			  void remove_zahl(int);
    
    			  int get_maximum(void);
    			  int get_mittelwert(void);
    			  int get_spannweite(void);
    			  int get_mitabweichung(void);
    			  int get_standardabweichung(void);
    			  AnsiString get_haufigkeit(void);
    };
    #endif
    

    So das ist jetzt messwerte.h datei ....

    So und das steht jetzt in messwerte.cpp ....

    int Tmesswerte::get_standardabweichung()
    {
     int test;
    
     return test;
    }
    

    so habe ich get_standardabweichung geschrieben, aber es kommt immer noch die fehlermeldung:

    "[C++ Fehler] messwerte.cpp(113): E2316 'Tmesswerte::get_standardabweichung()' ist kein Element von 'Tmesswerte'"
    ... dabei habe ich alle klassen so aufgebaut beispiel klassen z.B. für spannweite

    int Tmesswerte::get_spannweite()
    {
    	int spannweite;
    
    	spannweite = get_maximum() - get_minimum();
    	return spannweite;
    }
    

    und das funktioniert aber wenn ich jetzt eine neue klasse einfügen will kommt immer der selbe fehler ...



  • Überprüfe mal ob die Definition der Memberfunktion in der Headerfunktion exakt (!!!) mit der in der CPP Datei übereinstimmt.

    Meistens ist es ein Rechtschreibfehler so das in der Headerdatei int get_standardabweichung(void) steht und in der Cpp Datei int get_standardsbweichung().

    Es dürfte zwar nicht ausmachen aber ich würde schon das (void) in der Headerdatei durch () ersetzen.

    Genau aus diesem Grund kopiere ich gerne die Definition der Funktion aus der Headerfunktion und implementiere sie dann.



  • Ne daran liegt es auch nicht ich kopiere ja alles, also an rechtsschreibfehler liegt es nicht...

    weiß keiner ein rat wie man das problem lösen kann, hab auch schon alles komplett neu geschrieben aber trotzdem, er akzeptiert gar keine andere klasse mehr egal welche ich neu schreibe, meckert der immer.



  • Welche IDE verwendest du? Ist diese evtl. veraltet?
    So wie du die .h und .cpp jetzt gezeigt hast, kann ich wirklich keinen Fehler finden. Es könnte womöglich helfen, wenn du die gesamte .cpp der Klasse unverändert zeigst, sowie die main.cpp (oder entsprechende), in welcher die Klasse verwendet wird.

    Btw: - Das, was in der .h steht ist eine Klassendefinition.
    - Wieso dieser komische AnsiString und nicht std::string?



  • Dann würde ich dir die Holzhammer Methode empfehlen.

    Kommentiere dazu deine Klasse komplett aus so das dein Projekt durchkompiliert. Und nun kommentiere deine Klasse Schritt für Schritt wieder ein und schaue nach an welcher Funktion er hängen bleibt.



  • k hab jetzt neues projekt gestartetn eine einfach vcl datei erstellt eine cpp und eine header datei ....

    alles wieder gleich benannt messwerte.cpp und messwerte.h

    so das komische ist hab jetzt, in dem neuen projekt in die messwerte.h

    #ifndef class_messwerte
    #define class_messwerte
    
    #include <vcl.h>
    class Tmesswerte
    {   private:
    			  int *werte;
    			  int anzahl;
    	public:
    			  Tmesswerte();
    			  ~Tmesswerte(){};
    
    			  int get_minimum();
    			  int get_zahl(int);
    			  int get_anzahl(){return anzahl;};
    			  void set_anzahl(int);
    
    			  void add_zahl(int);
    			  void remove_zahl(int);
    
    			  int get_maximum(void);
    			  int get_standardabweichung(void);
    			 /* int get_mittelwert(void);
    			  int get_spannweite(void);
    			  int get_mitabweichung(void);
    			  AnsiString get_haufigkeit(void);      */
    };
    #endif
    

    so ab int get_mittelwert alles mal auskommentiert und in der messwerte.cpp hab ich auch den rest auskommentiert aber der meckert immer noch bei get_standardabweichung

    "[C++ Fehler] messwerte.cpp(76): E2316 'Tmesswerte::get_standardabweichung()' ist kein Element von 'Tmesswerte'"

    dabei ist alles komplett neu sogar noch weniger drinnen als vorher, als würde turbo c++ keine standardabweichung rechnen wollen, das komische ist ja egal welche neue klasse ich mache es geht nicht.

    kann es vielleicht auch an den programm turbo c++ liegen?!



  • Diese Datei ist meiner Meinung nach fehlerfrei. Wie gesagt kannst jetzt entweder noch mehr Code zeigen oder aber, was ich sowieso nur empfehlen kann, Microsoft Visual C++ 2010 Express versuchen.
    Ich weiß nicht, wie sehr der Name "Turbo C++" für Qualität spricht, aber irgendwo (im restlichen Code oder in dieser IDE) muss der Fehler ja stecken.



  • k vielen dank euch allen für die hilfe ...

    hab jetzt was ganze anderes gemacht, hab jetzt einfach neue .cpp und neue .h und hab statt messwerte.cpp und messwerte.h jetzt einfach neuen namen gemacht measurements.cpp und measurements.h alles messwerte namen erstetz durch measurements und siehe an auf einmal funktioniert das und kann auch neue klassen hinzufügen schon komisch. Ja ich benutze turbo c++ von der schule her weil wir dort damit arbeiten deswegen ^^



  • vllt. lag es auch daran, dass es einen Tippfehler beim Inkludieren der Headerdatei messwerte.h in messwerte.cpp gab...


Anmelden zum Antworten