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
-
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.