Array in Konstruktor mit Standardwert?



  • Moin
    ist es möglich einem Array im Konstruktor oder überhaupt bei Funktionen einen Standardwert zu geben?

    void f(int i[2] = {1,2})
             ...
    


  • Hi halo,

    meines Wissens kann man einem Array nur null als default-Wert verpassen.

    Viele Grüße,
    MaBa



  • Überlad die Funktion/Konstruktor doch einfach. Wäre meine Idee.

    #include <iostream>
    
    void func();
    void func(int *a);
    
    int main()
    {
    	func(); // Standardparameter [1, 2]
    
    	int b[2];
    	b[0] = 100;
    	b[1] = 20;
    
    	func(b); // Parameter [100, 20]
    }
    
    void func()
    {
    	int a[2];
    
    	a[0] = 1;
    	a[1] = 2;
    
    	func(a); // Die "richtige" Funktion mit den Standard-Parametern aufrufen.
    }
    
    void func(int *a)
    {
    	std::cout << a[0] << ", " << a[1] << std::endl;
    }
    


  • Hier noch eine Alternative:

    #include <iostream>
    
    void func(int *a = NULL);
    
    int main()
    {
    	func(); // Standardparameter
    
    	int b[2];
    	b[0] = 100;
    	b[1] = 20;
    
    	func(b); // Eigener Parameter
    }
    
    void func(int *a)
    {
    	int b[2];
    
    	if (!a)
    	{
    		a = b;
    
    		a[0] = 1;
    		a[1] = 2;
    	}
    
    	std::cout << a[0] << ", " << a[1] << std::endl;
    }
    

    Sollte dein Array natürlich nur 2 Elemente haben, so kannst du natürlich auch einfach folgendes machen:

    #include <iostream>
    
    void func(int a = 1, int b = 2);
    
    int main()
    {
    	func(); // Standardparameter
    
    	func(100, 20); // Eigener Parameter
    }
    
    void func(int a, int b)
    {
    	int x[2];
    
    	x[0] = a;
    	x[1] = b;
    
    	std::cout << x[0] << ", " << x[1] << std::endl;
    }
    


  • ok schade 😉
    aber danke für die antworten



  • Wer arbeitet schon mit rohen Arrays? 😉

    Nein, was willst du mit dem Defaultparameter für Arrays genau erreichen? Hast du ein Anwendungsbeispiel?


Anmelden zum Antworten