Frage zu ner Methode...



  • Habe ein problem. soll einfach 2 double variablen als private anlegen und dann eine methode, die in der aufgabenstellung so geschrieben ist;

    Die get funktion soll den Wert von m_X bzw m_Y zurückgeben (return).

    headeR:

    #ifndef C2DPOINT_H
    #define C2DPOINT_H
    
    class C2dpoint
    {
    
      public:     // public methods
    
      C2dpoint getX ();
      C2dpoint getY ();
    
      private:    // private member fields
    
       double m_X;
       double m_Y;
    
    };
    
    #endif
    

    cpp:

    #include "c2dpoint.h"
    
    C2dpoint C2dpoint::getX ()
    {
    return (m_X);
    }
    

    Fehlermeldung:

    c2dpoint.cpp: In member function C2dpoint C2dpoint::getX()': c2dpoint.cpp:6: parse error before)' token



  • Hmm, irgendwas stimmt hier nicht:

    C2dpoint C2dpoint::getX () 
    { 
    return (m_X); 
    }
    

    Die Funktion soll C2dpoint zurückgeben, m_X ist aber vom Typ double 😕



  • ja stimmt ,musste double sein... :idiot:



  • ich muss nun eine variable vom typ einer klasse deklarieren und dann per konstruktor den wert setzen.

    so wie es jetzt ist,geht es,aber warum geht es mit dem auskommentierten nicht, also erst deklarieren, dann die werte zuweisen ?

    Es soll mit Kontruktor gemacht werden:

    #include <iostream>
    #include "c2dpoint.h"
    using namespace std;
    
    int main()
    {
    
    C2dpoint myPoint (1.0,2.0);
    
    //myPoint (1.0,2.0);
    
    return 0;
    }
    


  • Wann wird denn der Konstruktor aufgerufen?
    Bei einer Zuweisung!
    Nee, das macht der Zuweisungsoperator oder Funktionen



  • wie jetzt? also ist e sklar das es ,wenn es mit dem kontruktor gemacht werden soll, nur bei der Initialisierung geht ?



  • Achtung:

    int main () {
    
       string a = "foo";
       string b("bar");
    
       string c;
       c = "fubar";
    }
    

    für den string a wird string::string(const char 😉 aufgerufen
    bei b wird ebenfalls string::string(const char 😉 aufgerufen
    bei c wird jedoch zuerst string::string () aufgerufen und in der zeile danach
    const string &string::operator = (const char *);

    du müsstest also den operator = überladen, wenn du eine zuweisung vornehmen willst.
    fall a ist KEINE zuweisung in dem sinne, sondern eine initialisierung!


Anmelden zum Antworten