Konstruktor/Destruktor in Klasse ...



  • Hi !

    Ich hab da irgendwie ein problem mit meiner Klasse bzw mit der
    initialisierung eines Konstruktors und eines Destruktors.
    Scheint so als ob ich das irgenwie nicht verstanden hätte ....
    Hier ist der Code von der meiner function.h ...

    class Temperatur {
    
     private:
    
    	 double waerme;
    
     public:
                leseC();                         // Konstruktor
    		   ~leseC();                      // Destruktor
                leseF();                      
    		   ~leseF();                     
    	 double leseC(void);
    	 double leseF(void);
    
    	 void speicherC(void);
    	 void speicherF(void);
    
    };
    

    Und hier die mein.cpp

    #include <iostream.h>
    #include <math.h>
    #include <conio.h>
    #include <col_iostream.h>
    #include <colorconsole.h>
    #include <time.h>
    #include "function.h"
    using namespace std;
    
    Functions::leseC() {              <<<----ab hier wird es Falsch ....
    }
    
    Functions::speicherC(){          <<<<---- ....
    }
    
    Funktions::speicherF(){          <<<<---- ....
    }
    
    Functions::leseF() {             <<<<---- ....
    }
    
    template <typename T> void eingabe( T& x ) 
    { 
       cout << "Input:  "; 
       cin  >> x; 
    } 
    
    template <typename T> void ausgabe ( const T x ) 
    { 
       cout << "Output: "; 
       cout << x; 
    } 
    
    int main(int argc, char *argv[ ])
    
    {    // Variablen Deklarationen
        float    fzahl1,fzahl2,wzahl,pzahl;
    	int      dzahl1,dzahl2,ijahr,wahl;
    	double   dErgebnis;
        char     buffer[10];
        long double grad, bogenmass, x;
    
    	// Constanten initialisierung
    	const long double PI = 3.1415926535897932384626433832795;
    

    Ich weiß jetzt echt warum das nicht geht .... hab ich irgenwas vergessen?

    THX für alle antworten!



  • was erwartest du dir von den Methoden Temperatur::~leseC() und Temperatur::~leseF() ?



  • Hi!

    Eigendlich nichts .... hab aber gelesen das der Einsatz von
    Konstruktoren/Destruktoren die Sicherheit der Klasse verbessert.
    Aber ich glaube ich sehe meinen Fehler ... diese Funktionen haben nur die Aufgabe, Klassen! bei ihrer Erzeugung zu initialisieren und bei ihrer Zerstörung aufzuräumen.
    Ich habe versucht dies bei Funktionen anzuwenden .... oder geht dies auch ?
    HELP!??? 😉

    THX für alle antworten

    PS:

    Hab den Abschnitt in der main.cpp
    jetzt wie folgt abgeändert:

    #include <iostream.h>
    #include <math.h>
    #include <conio.h>
    #include <col_iostream.h>
    #include <colorconsole.h>
    #include <time.h>
    #include "function.h"
    using namespace std;
    
    Temperatur::leseC() {
    }
    
    Temperatur::~leseC(){
    }
    
    Temperatur::speicherC(){
    }
    
    Temperatur::~speicherC(){
    }
    
    Temperatur::speicherF(){
    }
    
    Temperatur::~speicherF(){
    }
    
    Temperatur::leseF() {
    }
    
    template <typename T> void eingabe( T& x ) 
    { 
       cout << "Input:  "; 
       cin  >> x; 
    }
    .....
    .....
    

    aber immer noch total falsch ....



  • Die Konstruktoren/Destruktoren einer Klasse müssen so heissen wie der Klassenname auch, also:

    class KlassenName {
      public:
        KlassenName();  //<-- Konstruktor
        KlassenName(int i);  //<-- Konstruktor
        ~KlassenName(); //<-- Destruktor
      private:
    }
    

    In deinem Fall also:

    class Temperatur {
    
     private:
    
         double waerme;
    
     public:
                Temperatur();                         // Konstruktor
                Temperatur(int i);                         // Konstruktor
               ~Temperatur();                      // Destruktor
    
         double leseC(void);
         double leseF(void);
    
         void speicherC(void);
         void speicherF(void);
    
    };
    

    Mehrere Destruktoren geht nicht, woher soll er wissen welchen er aufrufen soll? Das ganze wird ja implizit gemacht.
    Bei Konstuktoren hast du die Möglichkeit verschiedene mit unterschiedlichen Parametern zu schreiben, dann so wie ich das oben gemacht habe.

    Gruß
    Entyl Sa



  • hi,
    geht IMHO nicht. Aber die Funktionen Temperatur::leseC() sollte funzen. Der Fehler wird sicher nur durch die Funktionen mit der ~ verursacht.

    Tschau Gartenzwerg



  • vielen Dank !
    Jetzt hats klick gemacht 😉

    THX !


Anmelden zum Antworten