problem bei ZUgriff auf globale Structur



  • Hallo zusammen!

    ich bin Neulinge in C++ und muss aber ein größes Projekt anlegen;
    Als Einstiegsprogramm möchte ich mit einer Methode Dezim() die X und Y pair werte als quasi ein ArryStruktur zuweisen und die mit get_x() und get_y() wieder zurückgeben; hier ist mein Code:

    Projct.h

    struct XYpair{
      double x;
      double y;
    };
    
    class INPUT{
    
     private:
      int psize;
      double xmin,xmax;
      XYpair* ptr;
    
     public:
      void setvalue();
      struct XYpair* Dezim(int& psize, XYpair* ptr);
      double* get_x(int&psize, XYpair* ptr);
    
    };
    [code]
    project.cpp:
    [/code]
    
    void INPUT::setvalue(){
      cout << "xmin ein geben :"<< '\n';
      cin >>xmin ;
      cout << "xmax ein geben :"<< '\n';
      cin >>xmax;
    
    }
    
    INPUT::struct XYpair* Dezim(int psize, struct XYpair* ptr){
    
      doube xr=xmax-xmin/psize;
      doub X=xmin;
      int i;
       double* dptr= new XYpair(psize);
      for(i=0;i<psize;i++){
        dptr[i].x=X;
        dptr[i].y=sin(X);
        X+=xr;
      }
      return dptr;
    }
    
    INPUT::double* get_x(int&psize, XYpair* ptr){
    
      double* xptr= new double(psize);
      int i;
      for(i=0;i<psize;i++){
        xptr[i]=ptr[i].x;
      }
      return xptr;
    }
    
    INPUT::double* get_y(int&psize, XYpair* ptr){
    
      double* yptr= new double(psize);
      int i;
      for(i=0;i<psize;i++){
        xptr[i]=ptr[i].y;
      }
      return yptr;
    }
    [code]
    
    Main.cpp:
    [/code]
    struct XYpair* v,M;
    
     INPUT Func;
    
     int psize=10;
    
     func.setvalue();
     M=func.Dezim(psize,v);
    
    for(int i=0;i<psize;i++){
       cout <<"M.x"<<M[i].x<<"M.y"<<M[i].y;
     }
    
     func.get_x(psize,v)
    
    Compiler meldet mir die folgenden Fehler
    

    g++ -c project1.cpp
    project1.cpp:15:8: error: expected unqualified-id before ‘struct’
    make: *** [project.o] Fehler 1
    g++ -c main.o
    [code]

    kann mir Jemand sagen wo die Fehler sind,

    bin für jede Hilfe sehr dankbar

    Gruß
    Sebleb



  • Erstmal solltest du nicht so viel mit Zeigern um dich werfen - dein struct ist klein genug, um per Wert herumgereicht werden zu können.
    Zweitens sind mitunter ein paar #include's nützlich.
    Drittens wirf mal einen Blick in die Standard-Bibliothek - dort findest du u.a. std::pair<> und std::vector<>.

    Viertens: Wenn du ein Array per new anfordern willst, dann gib die Größe in eckigen Klammern an (Z.36, 48 und 58), außerdem ist M im Hauptprogramm kein Zeiger - und Referenzübergabe macht nur Sinn, wenn du den Wert ändern und zurückgeben willst.

    PS: Und zu jedem new sollte ein delete gehören.



  • Hallo CStoll;

    Danke für deine Tips und Sorry dass ich zupät gemeldt habe ;
    ich bin dabei STL anzuschaue und habe mein Programm ein bisschen geändert aber anscheined kriege ich es nicht zum laufen ; die Elmentaremethode kann nicht Struct als Rückgabwert zurückleifen:

    project1.h
    [cpp]
    struct XYpair{
    double x;
    double y;
    };

    class INPUT{

    private:
    int psize;
    double xmin,xmax;
    XYpair* ptr;

    public:
    void setvalue();
    struct XYpair* Dezim(int& psize, XYpair* ptr);

    };
    [cpp]
    project1.cpp:
    void INPUT::setvalue(){
    cout << "xmin ein geben :"<< '\n';
    cin >>xmin ;
    cout << "xmax ein geben :"<< '\n';
    cin >>xmax;

    }

    INPUT::struct XYpair* Dezim(int psize, struct XYpair* ptr){

    doube xr=xmax-xmin/psize;
    doub X=xmin;
    int i;
    double* dptr= new XYpair[psize];
    for(i=0;i<psize;i++){
    dptr[i].x=X;
    dptr[i].y=sin(X);
    X+=xr;
    }
    delete[]dptr;
    return dptr;
    }

    main.cpp:

    int psize=10;
    struct XYpair* v, *M;
    INPUT Func;

    Func.setvalue();
    M=Func.Dezim(psize,v);

    for(int i=0;i<psize;i++){
    cout <<"M.x"<<M[i].x<<"M.y"<<M[i].y;
    }
    return 0;
    [cpp]

    Compiler meldet folgende Fehler:
    g++ -c project1.cpp
    project1.cpp:15:8: error: expected unqualified-id before ‘struct’
    make: *** [project.o] Fehler 1
    g++ -c main.o

    bin für jede Hilfe sehr danke bar,

    Gruß
    Seb


  • Mod

    `INPUT::struct XYpair* Dezim(int psize, struct XYpair* ptr){

    `
    ➡

    `XYpair* INPUT::Dezim(int psize, struct XYpair* ptr){

    `

    Das struct gehört in C++ nicht mehr zur Typenbezeichnung (ist optional). Du kannst also überall XYPair statt struct XYPair schreiben.

    Und hör auf das was CStoll über die Standardbibliothek gesagt hat, ich kann davon nicht viel bei dir erkennen.


  • Mod

    INPUT::struct XYpair* Dezim(int psize, struct XYpair* ptr){
    ...
    INPUT::double* get_x(int&psize, XYpair* ptr){
    ...
    INPUT::double* get_y(int&psize, XYpair* ptr){
    

    ==>

    struct XYpair* INPUT::Dezim(int psize, struct XYpair* ptr){
    ...
    double* INPUT::get_x(int&psize, XYpair* ptr){
    ...
    double* INPUT::get_y(int&psize, XYpair* ptr){
    


  • Danke Sehr

    es hat gut geklappt das waren genau meine Fehler.


Anmelden zum Antworten