C++ Refferenz auf Klasse als Variable



  • Sorry für die verquere Überschrift, aber ich kanns grad ned besser umschreiben 🙂
    Folgendes Szenario.
    Zwei Spieler stehen auf einer großen Wippe und versuchen diese im Gleichgewicht zu halten. Während der Simmulation wird in bestimmten Intervallen die update-Funktion der Wippe aufgerufen. Dieses Update wird dann an die beiden "Spieler" weitergeschickt, zusammen mit dem momentanen Zustand der Wippe (Auslenkung, Drehmoment, Trähgeit, etc.).
    Die Spieler reagieren nun und bewegen sich.
    Daraufhin frägt die Wippe die Position der beiden ab und reagiert physikalisch korrekt.
    Dann kommt wieder ein Update usw.
    Nun zu meinem Problem:
    Wippe.h

    class Wippe {
    	public:
    		// Konstruktor
    		Wippe (Person& p, Motor& m, float l);
    
    		// Updatefunktion. s ist das Intervall in Sekunden.
    		void update (float s);
    
    	private:
    		Person person;	// Person auf der rechten Seite
    		Motor motor;	// Motor auf der linken Seite
    
    		const float laenge;		// Länge in Metern
    
    		float winkel;			// Winkel im Bogenmaß
    		float winkelgeschwindigkeit;	// Geschwindigkeit in m/s
    		float drehimpuls;		// Drehimpuls
    		float drehmoment;		// Drehmoment
    		float traegheit;		// Trägheit
    
    		// Rechenfunktionen.
    		void rechneWinkel ();
    		void rechneWinkelgeschwindigkeit ();
    		void rechneDrehimpuls ();
    		void rechneDrehmoment ();
    		void rechneTraegheit ();
    };
    
    /// Konstruktor um die Länge der Wippe festzulegen.
    ///
    /// \param laenge Länge der Wippe in Metern.
    inline Wippe::Wippe (Person& p, Motor& m, float l)
    	: person(p), motor(m), laenge(l)	{}
    

    Wippe.cpp

    void Wippe::update (float s) {
    
            // Update mit Daten an Die Mitspieler schicken
            person.update(winkel, winkelgeschwindigkeit,
                            drehimpuls, drehmoment, traegheit);
            motor.update(winkel, winkelgeschwindigkeit,
                            drehimpuls, drehmoment, traegheit);
    
            // Berechnungen ausführen
            ...
    }
    

    Person.h (Motor.h analog ... Vererbung kommt noch ;))

    class Person {
    	public:
    		// Konstruktor
    		Person (float gew, float pos, float min, float max);
    
    		// Methoden um Information auszulesen
    		float liesGewicht() const;
    		float liesPosition() const;
    
    		// Updatefunktion. s ist das Intervall in Sekunden.
    		void update(float s, float winkel, float winkelgeschwindigkeit,
    				float drehimpuls, float drehmoment,
    				float traegheit);
    

    Beim Übersetzen von Wippe.cpp bekomm ich nun folgenden Fehler:

    Wippe.cpp: In member function »void Wippe::update(float)«:
    Wippe.cpp:13: Fehler: keine passende Funktion für Aufruf von »Person::update(float&, float&, float&, float&, float&)«
    Person.h:17: Anmerkung: Kandidaten sind: void Person::update(float, float, float, float, float, float)
    Wippe.cpp:15: Fehler: keine passende Funktion für Aufruf von »Motor::update(float&, float&, float&, float&, float&)«
    Motor.h:18: Anmerkung: Kandidaten sind: void Motor::update(float, float, float, float, float, float)
    

    Warum hab ich da plötzlich nen anderen Funktionskopf drin?



  • du übergibst nur 5 variablen, die funktion erwartet aber 6

    mfg.



  • Steinigt mich -.-
    Blind wie sonst noch was ... danke für die Schnelle Antwort 🙂


Anmelden zum Antworten