Können set-Methoden auch arrays zurückgeben?



  • Hallo Community!

    Ich sitze schon länger an einer Aufgabe:

    ]class Zufallszahlen
    {
    private:
    int *zahlen;
    int anzahl;
    public:
    Zufallszahlen(int n):anzahl(n)// Konstruktor
    {
    zahlen=new int[n];
    // Mit Zufallszaheln fuellen
    for(int i=0;i<n;i++)
    {
    zahlen[i]=(rand()%n)+1;
    }
    }
    int get_anzahl(){return anzahl;}
    int get_zahlen(){return *zahlen;}
    };

    Ich soll eine Funktion Summe schreiben die weder friend noch Elementfunktion ist , ein Klassenobjekt übergeben bekommt und die Summe aller im Objekt gespeicherten Zahlen zurückbekommt.
    Dafür brauche ich ja die set_Methode "set_zahlen" in der Klasse die mir ein Array übergibt.
    Wie geht denn das??

    int get_anzahl(){return anzahl;}
    			  int get_zahlen(){return *zahlen;}
    

    Das gibt ne superlange Fehlermeldung!



  • class Zufallszahlen
    {
    	  private:
    	  		  int *zahlen;
    	  		  int anzahl;
    	  public:
    	  		 Zufallszahlen(int n):anzahl(n)// Konstruktor
    	  		 {
    			 zahlen=new int[n];
    			 // Mit Zufallszaheln fuellen 				   
    			for(int i=0;i<n;i++)
    			{
    			zahlen[i]=(rand()%n)+1; 		
    		    }					 
    		     }
    			 int get_anzahl(){return anzahl;}
    			 int get_zahlen(){return *zahlen;}		  	
    };
    
    int summe(Zufallszahlen& objekt)
    {
    int ergebnis;
    
    for(int i=0;i<Zufallszahlen.get_anzahl();i++)
    {
     // hier fehlt noch was		
    } 	
    
    }
    


  • Mach lieber:

    int get_zahl(std::size_t index)
    {
        return zahlen[index];
    }
    

    Den Zugriff in der unteren Schleife kriegst du dann wohl alleine hin...



  • Danke für den Tipp!



  • Arrays können in C++ nie Rückgabetypen von Funktionen sein.

    Falls du das sonst einmal brauchst, kannst du z.B. Zeiger bzw. Iteratoren oder (Const-Referenzen auf) ganze Container zurückgeben. Allerdings ist es oft der bessere Weg, keinen vollständigen Zugriff auf ein Array/einen Container von ausserhalb der Klasse zu gewähren.


Anmelden zum Antworten