feldindexprüfung / kopierkonstr. überladen!?



  • hallo,

    ich mal wieder.. 🙄

    also ich soll eine feldklasse entwickeln, die eine feldindexprüfung durchführt, feldelemente sollen double sein. die grösse des feldes dim wird über den konstruktor festgelegt. der konstruktor soll den notwendigen speicherplatz dynamisch allokieren.
    auf die feldelemente wird über die methode

    double getElement(int i);
    

    zugegriffen mit dem feldindexwert i, elementwerde werden mit

    void setElement(double elem, int i);
    

    gesetzt.
    der gültige bereich von i geht von 0 bis dim-1. getElement() und setElement() prüfen, ob ein gültiger indexwert vorliegt und melden einen fehler, falls dies nich der fall is!
    okay, bis hier hin habs ich mal so ..

    #include <iostream>
    #include <string.h>
    
    using namespace std;
    
    class check {
    	private:
    		double * dim;
    		int i;
    	public:
    		check();
    		~check() { delete[] dim; }
    		double getElement(int i);
    		void setElement(double elem, int i);
    };
    
    check::check() {		// Konstruktor
    	dim = new double[5];
    
    }
    
    double check::getElement(int i) {
    	if (i <= 4) {
    		return dim[i];
    	} else {
    		return false;
    	}
    }
    
    void check::setElement(double elem, int i) {
    	if (i <= 4) {
    		dim[i] = elem;
    	} else {
    		cout << "Kein gueltiger Indexwert" << endl;
    	}
    }
    
    int main() {
    	check i1;
    	i1.setElement(234.242, 0);
    	i1.setElement(93.123, 1);
    	i1.setElement(2123.32, 6);
    	cout << i1.getElement(0) << endl;
    	cout << i1.getElement(1) << endl;
    
    }
    

    das funktioniert eigentlich auch so, wie ich es in der aufgabe verstehe !

    jetzt die 2. aufgabe:
    der kopierkonstruktor(ich hab gar keinen drin 😮 ) soll überladen werden damit deklarationen mit zuweisungsinitialisierungen sowie übergabe per wert eines objekts der feldklasse an eine funktion, sowie rückgabe per wert möglich ist! ... *nullplan*

    jemand ne idee, was damit gemeint is? und event. lösungsvorschläge .. ich danke euch :p



  • check(const check &copy);
    

    wenn ich mich nicht irre

    was damit gemeint is?

    deklarationen mit zuweisungsinitialisierungen

    hmmm vieleicht sowas

    check chk=check();
    

    sowie übergabe per wert eines objekts der feldklasse an eine funktion, sowie rückgabe per wert

    check func(check chk)
    {
      //ne kopie geht rein und ne kopie geht raus
    }
    


  • ohne Gewähr/Compile:

    check::check(const check & source){	//CopyKonstruktor
        i = source.i;
        dim = new double[i];								
        for(int row=0; row<i ;row++){
            dim[i] = source.dim[i]; 
        }
    }
    

    zu gebrauchen in etwa so:
    check c2(c1);


Anmelden zum Antworten