Zugriff auf objekte fremder klassen



  • Hallo werte Mitglieder,

    Ich habe mich mal vertieft in die objektorientierte Programmierung gewagt und finde sie ganz toll. Man kann ein wunderbar aufgeräumtes Programm gestalten. Bei mir hapert es allerdings noch ein wenig am nötigen Wissen.

    Ich habe hier mal meine mainwindow.cpp gepostet. In Zeile 19 kracht es. Die Fehlermeldung lautet: "mainwindow.cpp:19:56: Fehler: expected primary-expression before ».« token"
    Jet ist das Objekt meiner Klasse Parameter. Wenn ich das Objekt in mainwindow.h anlege, meine Methoden dort deklariere und in der mainwindow.cpp definiere klappt alles. Wenn ich aber eine Klasse für sich anlege und dort ein Objekt Jet erzeuge, bekomme ich einfach den Aufruf des Objektes in meiner mainwindow.cpp einfach nicht hin. Was mache ich falsch?

    Das hier der Wurm drin steckt ist mir schon mal klar "Parameter.Jet"
    Aufruf des Objektes Jet von der Klasse Parameter.

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    #include "plot.h"
    
    #include <qwt_scale_engine.h>
    #include <qlabel.h>
    #include <qlayout.h>
    
    #include <parameter.h>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        QString resultstring = "";
        ui->lineEdit->setText(resultstring.setNum(Parameter.Jet->get_geschwindigkeit()));
    
        const double intervalLength = 100.0;                      
        ui->widget->setIntervalLength(intervalLength);
    
        ui->Wheel->setRange(1,500,0.01),
        ui->Wheel->setValue(intervalLength),
        ui->Wheel->setMass(0.75),
        ui->Wheel->setBorderWidth(1.5);
        ui->Wheel->setTotalAngle(7200);
    
        const double startwert = 1;
    
        ui->Wheel_3->setRange(1,5,0.1),
        ui->Wheel_3->setValue(startwert),
        ui->Wheel_3->setMass(0.75),
        ui->Wheel_3->setBorderWidth(1.5);
        ui->Wheel_3->setTotalAngle(720);
    
        connect(ui->Wheel,SIGNAL(valueChanged(double)), ui->widget, SLOT(setIntervalLength(double)));
        connect(ui->Wheel_3,SIGNAL(valueChanged(double)),ui->widget, SLOT(setDamp(double)));
    
    }
    


  • Ist doch ganz klar, der Compiler kennt "Parameter" nicht.

    Wir leider auch nicht, deshalb können wir Dir nicht weiterhelfen.



  • Vieleicht gehts mit dem Scope-Operator :

    setNum(Parameter.Jet::get_geschwindigkeit())



  • Keine Ursache.

    Hier meine Klasse Parameter.

    #ifndef PARAMETER_H
    #define PARAMETER_H
    
    #include <math.h>
    
    const double pi = 3.14159265358979;  //Kreiszahl Pi
    
    class Parameter
    {
    public:
        Parameter();
    
    protected:
    
        double v;         	//Geschwindigkeit
        double a;         	//Beschleunigung
        double x;         	//x-koordinate
        double y;         	//y-koordinate               
        double z;         	//z-koordinate
        double vx;        	//Geschwindigkeit-x Richtung
        double vy;        	//Geschwindigkeit-y Richtung
        double vz;        	//Geschwindigkeit-z Richtung
        double h;         	//Höhe
        double m;           //Masse
    
        double wx;          //rollen-x Richtung
        double wy;          //rollen-y Richtung
        double wz;          //rollen-z Richtung      
    
    public:
    
        void set_geschwindigkeit(double);
        void set_beschleunigung(double);
        void set_x_koordinate(double);
        void set_y_koordinate(double);
        void set_z_koordinate(double);
        void set_geschwindigkeit_x(double);
        void set_geschwindigkeit_y(double);
        void set_geschwindigkeit_z(double);
        void set_masse(double);
        void set_rollen_x(double);
        void set_rollen_y(double);
        void set_rollen_z(double);
    
        double get_geschwindigkeit(void);
        double get_beschleunigung(void);
        double get_x_koordinate(void);
        double get_y_koordinate(void);
        double get_z_koordinate(void);
        double get_geschwindigkeit_x(void);
        double get_geschwindigkeit_y(void);
        double get_geschwindigkeit_z(void);
        double get_masse(void);
        double get_rollen_x(double);
        double get_rollen_y(double);
        double get_rollen_z(double);
    
        Parameter *Jet;       
    
    };
    
    #endif // PARAMETER_H
    

    Ich kann auch gerne die cpp-Datei posten.
    Nichts besonderes eben eine ganz banale Klasse halt.



  • Hallo Lusches7798,

    Den Scope Operator habe ich schon auf gut Glück mal probiert aber das ist leider auch nicht vom Erfolg gekrönt gewesen.
    Ich danke dir aber trotzdem für deinen Vorschlag, jeder Rat ist willkommen. Ich habe zwar ein ganz anständiges C++ Buch (C++ von Null auf Hundert in 40 Lektionen, von Kris Jamsa, elektor Verlag) aber zum Thema wie mehrere Klassenobjekte miteinander kommunizieren steht da leider nicht viel hilfreiches drin.


Anmelden zum Antworten