Funktion mit Array als Rückgabewert



  • Hi,
    habe folgendes Problem:

    will in meiner main.cpp eine funktion aus einem objekt aufrufen die ein array aus der main bekommt und ein array wieder zurückgibt. Bekomme dabei folgende Fehler:

    variable or field objektEinfuegen' declared voidfield' was not declared in this scope
    expected ,' or;' before '{' token

    main.cpp:

    FigurT fig;
         fig.objektEinfuegen(field);
    

    FigurT.cpp:

    void objektEinfuegen(*field){
    
         for(int x = 0;x<breite;x++){
          for(int y = 0;y<MAXOBJHOEHE;y++){   
             for(int z = 0;z<tiefe;z++){
                     if(objektfeld[x][y][z] != 0){
                        field[x][hoehe + y][z] = objektfeld[x][y][z];
                     }
             }
          }
          field[0][hoehe + MAXOBJHOEHE-1][0] = 3; //x- Koordinate des Figurmittelpunktes
          field[1][hoehe + MAXOBJHOEHE-1][0] = hoehe + 2; //y- Koordinate des Figurmittelpunktes
          field[2][hoehe + MAXOBJHOEHE-1][0] = 3; //z- Koordinate des Figurmittelpunktes
         }
    }
    

    FigurT.h:

    #ifndef FigurT_H
    #define FigurT_H
    
    class FigurT
    {
    
         private:
    
         public:
               GLint objektfeld[6][6][6];
               void objektEinfuegen(GLint[6][14][6]);
    };
    
    #endif
    


  • Wo und wie hast du field erstellt? Der meckert rum weil field nicht declariert ist und nimmt an das es vom typ void ist was zum übergabetyp nicht passt



  • field ist in der main erstellt, wollt nicht die ganze main posten, weil die mittlerweile ca 2 seiten lang ist.

    main.cpp:

    #include "Objekte\Objekt2.h"
    #include "steuerung.h"
    #include <math.h>
    #include "Objekte\Wuerfel.h"
    #include "area.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <GL/glut.h>
    #include "Objekte/Figur.h"
    #include "Objekte/FigurT.h"
    GLint field[breite][hoehe+MAXOBJHOEHE][tiefe];
    
    void drawScene(void){     
         glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
         glColor3f(0,1,1);
         Camdrehen();
         glTranslatef(0,-10,-10);
         //initfield();
         FigurT fig;
         fig.objektEinfuegen(field);
         drawfield();
         glLoadIdentity();
         glutSwapBuffers();
         glutPostRedisplay();
    }
    


  • aber fig.objektEinfuegen() erwartet doch einen Zeiger und du übergibst das Objekt an sich also müsste das doch

    [cpp]#include "Objekte\Objekt2.h"
    #include "steuerung.h"
    #include <math.h>
    #include "Objekte\Wuerfel.h"
    #include "area.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <GL/glut.h>
    #include "Objekte/Figur.h"
    #include "Objekte/FigurT.h"
    GLint field[breite][hoehe+MAXOBJHOEHE][tiefe];

    void drawScene(void){
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glColor3f(0,1,1);
    Camdrehen();
    glTranslatef(0,-10,-10);
    //initfield();
    FigurT fig;
    fig.objektEinfuegen(**&**field);//hier die änderung
    drawfield();
    glLoadIdentity();
    glutSwapBuffers();
    glutPostRedisplay();
    }[/cpp]

    heissen


Anmelden zum Antworten