array von objekten dynamisch allozieren



  • hab hier folgende klasse:

    class Object {
    public: 
    char name[80]; 
    double weight; 
    Object *next; 
    Object(char *init_name=0, double init_weight=0, Object *init_next=0) {
    if (init_name) strcpy(name,init_name);
    weight=init_weight;
    next=init_next;
    }
    };
    
    int main()
    {
    int Anzahl;
    cout<<"Bitte geben Sie die Anzahl der zu bearbeitenden Gegenstaende ein.";
    cin>>Anzahl;
    cout<<endl;
    ... hier soll der speicherplatz für das array alloziert werden...
    find_all(feld, Anzahl, 20);
    ... //Bearbeitung der Daten;
    ,,, // Punkt 2: Freigeben des Speicherplatzes
    return 0;
    }
    

    der Destruktor ist mir noch klar....

    delete [] feld;
    

    nur beim Speicherplatz allozieren geht meine meinung auseinander...:

    meine 1. variante:

    Object *feld = new Object [Anzahl];
    

    2. variante:

    feld = new int[Anzahl];
    

    weiß nicht welche stimmt...*help* 😞



  • Bin für

    Object *feld = new Object [Anzahl];
    

    🙂



  • Im Zweifel am besten

    #include <vector>
    
    // ...
    
    std::vector<Object> feld(Anzahl);
    


  • hab hier die methode sum(), die das gesamtgewicht aller elemente des arrays berechnen soll, deren gewicht höchstens max_weight ist...

    sieht bei mir so aus:

    double Object::sum(Object *feld,int size,int max_weight)
    	{
    	double summe;
    
    	if(feld!=0){
    	for(int i=0;i<size;i++)
    		if(feld[i].weight<max_weight)	// oder -> statt .?
    			summe+=feld[i].weight;
    
    		}
    		return summe;
    	}
    

    bin mir nur nicht sicher, ob ich da nicht einen Hilfszeiger brauche...oder
    stimmts so wie ich es habe, bzw. reichts wenn ich nur das ganze array
    durchlaufe...Bin mir nur deshalb nicht sicher, weil ich ja ein array vo OBJEKTEN hab...



  • Weiß das jemand? *hilfe* 😞



  • Was verwechselt ihr eigentlich immer NULL und 0?

    Naja zu deiner Frage: Natürlich nimmst du in dem Fall . , du hast einen Zeiger, der durch deine Indexangabe schon dereferensiert wird.

    Gruß Sebastian


Anmelden zum Antworten