Anfängerin Rückgabewert array?



  • Hallo,

    ich habe Problem nachzuvollziehen warum ich kein array als Rückgabewert einer funktion in einer klasse definieren kann.

    Ich mache folgendes:

    class1::method1
    {
        Class2 c = Class2();
        double arr[2][2] = c.method2();
    }
    
    double arr[][] Class2::method2
    {
        double arr[2][2];
        return arr;
    }
    

    Oder wie soll ich das array übergeben?

    Danke für eure ratschläge



  • Hallo

    du kannst kein Array undefinierter Größe zurückgeben. Entweder benutzt du Zeiger und legt den Speicher für das Array mit new selber an (und löscht den nach den Gebrauch wieder mit delete), oder du verwendest das dynamische Array std::vector.

    bis bald
    akari



  • ein 2-dimensionales Array zu übergeben ist etwas kompliziert:

    #include <iostream>
    
    using namespace std;
    
    void foo( double **array, size_t dim_x, size_t dim_y )
    {
        for( size_t y = 0; y < dim_y; ++y ) {
    
            for( size_t x = 0; x < dim_x; ++x )
    
                cout << array[ x ][ y ] << "; ";
    
            cout << endl;
        }
    
        cout << endl;
    }
    
    int main( )
    {
        double bar[ 2 ][ 2 ] = { { 1.1, 2.2 }, { 3.3, 4.4 } };
        double *p[ 2 ];
    
        for( size_t i = 0; i < 2; ++i )
            p[ i ] = bar[ i ];
    
        foo( p, 2, 2 );
    }
    

    Greetz, Swordfish


  • Mod

    Swordfish schrieb:

    ein 2-dimensionales Array zu übergeben ist etwas kompliziert:

    #include <iostream>
    
    using namespace std;
    
    void foo( double **array, size_t dim_x, size_t dim_y )
    {
        for( size_t y = 0; y < dim_y; ++y ) {
    		
            for( size_t x = 0; x < dim_x; ++x )
    			
                cout << array[ x ][ y ] << "; ";
    
            cout << endl;
        }
    
        cout << endl;
    }
    
    int main( )
    {
        double bar[ 2 ][ 2 ] = { { 1.1, 2.2 }, { 3.3, 4.4 } };
        double *p[ 2 ];
    
        for( size_t i = 0; i < 2; ++i )
            p[ i ] = bar[ i ];
    	
        foo( p, 2, 2 );
    }
    

    Greetz, Swordfish

    oder auch

    void foo( double (&array)[2][2]);
    // ...
    int main( )
    {
        double bar[ 2 ][ 2 ] = { { 1.1, 2.2 }, { 3.3, 4.4 } };
        foo( bar );
    }
    

    aber wahrscheinlich ist das zu simpel.


Anmelden zum Antworten