2D array als Parameter übergeben mit variabler Größe



  • Hi.

    Habe folgendes Prog:

    #include <stdlib.h> 
    
    int Matrix[5][5];
    int Matrix2[23][40];
    
    void test(int Matrix[][]){
        Matrix[1][1]=5;
    }
    
    void main(){
        test(Matrix);
        test(Matrix2);
    }
    

    Ich will also ein 2D Feld übergeben.
    Die Größe der Matrix (2D feld) soll jedoch variable sein.
    Wie geht das?
    Ich habe gehört man kann in C nur eindimensionale Felder als Parameter übergeben. Stimmt das??

    Gibt es viellicht eine Lösung unter C++?!!

    Gruß
    madap



  • Lesen:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-58906.html

    template <int n>
    void test(int(*Matrix)[n], int firstDimSize){
    }
    
    int main(){
        test(Matrix, 5);
        test(Matrix2, 23);
    }
    

    Alternativ:

    template <int n, int m>
    void test(int (&Matrix)[n][m]){
    }
    

    Am Besten wäre es allerdings, wenn du deine Matrix nicht als zweidimensionales Feld repräsentieren würdest.



  • Vor kurzem auch hier schon besprochen worden.



  • #include <iostream> 
    
    template<int x, int y> 
    void foo(int bar[x][y]) { 
      std::cout << x << ' ' << y << std::endl; 
    } 
    
    int main() { 
      int baz[3][4]; 
    
      foo<3, 4>(baz); 
    }
    

    Das sieht schon gut aus (Code aus Diskussion siehe Link oben). Aber es geht nicht.

    Fehler: c:\..main.cpp(4) : error C2087: '<unbekannt>' : Feldindex fehlt

    Was ist da falsch?


Anmelden zum Antworten