ganz kurze frage zum verständnis ^^



  • habe einen dialog, wo man ein x vom typ double eingeben kann, möchte jetzt in einer anderen cpp datei damit weiterrechnen.
    habe dafür die #include "Eingabe.h" in die cpp datei eingefügt und ging davon aus, dass er dann x kennt, aber dies ist nicht der fall, x ist nicht deklarierter bezeichner....
    wieso denn das???
    danke sandra 😮



  • Weil x vielleicht "private" ist? Und private Variablen sind nur der eigenen Klasse oder den friends bekannt/zugänglich. Da würde ich dann eine public get/set-Methode definieren, z.B.:

    public:
     double getX()
     {
        return x;
     };
    
     void setX(double x)
     {
        this->x = x;
     };
    

    Oder du machst deine Variable public, aber das ist "unschön". 😉

    [ Dieser Beitrag wurde am 13.12.2002 um 10:39 Uhr von Artchi editiert. ]



  • mache ich dieses dann in der header datei von eingabe.h



  • funtzt so net... 😡

    habe nochma geschaut, sie stehen bei der Eingabe.h unter:

    public:
    Eingabe ((Wnd* pParent = NULL);
    enum {IDD = IDD_Eingabe};
    double x
    double y
    ...

    also muss er sie doch kennen wenn ich die header datei mit einbinde, oder 😕



  • habe jetzt member variablen angelegt == public.
    dann die header datei der variablen includiert,
    und eine variable aufgerufen, dann compiliert und siehe da:

    Der Compiler sagt sie sind nicht deklariert ! ! !

    Kann mir bitte mal jemand sagen, was ich hier falsch mache, sehe so langsam nur noch den Wahnsinn auf mich zu kommen ^^

    Thx Sandra 😡



  • Yep ich glaub ich weiß was du vorhast.
    Gehe ich richtig in der annahme das es circa so bei dir aussieht?

    class myClass1
    {
      public:
             double x;
             double y;
    };
    

    und in deiner zweiten Classe steht folgendes..

    class myClass2
    {
    };
    
    void myClass2::eineMethode(void)
    {
       cout << x << endl;
    }
    

    Das geht nicht weil du die Variable ja über die deine erste Klasse ansprechen musst entweder nimmst du in die zweite Klasse eine MemberVariable vom Typ deiner ersten Klasse auf:

    class myClass2
    {
      private:
         myClass1 meinObjekt();
    };
    

    dann kannst du so darauf zugreifen in deiner zweiten klasse

    void myClass2::eineMethode(void)
    {
       cout << meinObjekt.x << endl;
    }
    

    oder du machst die variable static und dann kannste sie mit der Klasse aufrufen

    void myClass2::eineMethode(void)
    {
       cout << myClass1::x << endl;
    }
    

    Aber normalerweise benutzt man dafür set und get Methoden. Aber die dann auch nur in verbindung mit dem Objekt oder wenn sie statisch sind in Verbindung mit der Klasse wie in Beispiel 2.

    MfG DreamDancer



  • Ich würde mal sagen, es wären erstmal Grundkenntnisse in C++ nötig. Denn das du die Variable zumindest über einen Pointer oder Object ansprichst, hatte ich vorausgesetzt.

    Ansonst, wie von Dreamdancer vermutet, hast du vergessen das Object mit anzugeben.



  • dankeschön, habe es so gemacht , wie dreamdancer es sagte, endlich mal ein erfolgserlebnis, thx
    sry, aber die c++ grundlagen kämpfe ich seit monaten durch, also net sauer sein, probiere gerade ältere progs ein bissi umzumodeln und da kommen halt mal immer wieder sachen vor, die ich nicht kapiere, deswegen übe ich es ja, thx nochma, byebye
    sandra
    😉


Anmelden zum Antworten