(C++) Definition von Variablen!!



  • Ich habe ein Programm mit versciedenen Funktionen in denen ich die selben variablen benötige!
    Frage: Gibt es eine Möglichkeit die Variablen für alle Funktionen nur einmal zu definieren??

    int aufzug::up(int now, int stw)
    { int z=now;
    //***********************************
    int radius=getmaxx()/16-getmaxy()/16;
    int x=radius*50;                      //<-- Problem!!!
    int y=radius*40;
    int abstand= radius*2;
    //***********************************
    ...
    ...
    return 0;}
    


  • Sofern du keine Klasse benutzt mach einfach ne Globale Variable, also deklarier die Variable einfach irgendwo außerhalb von Funktionen.

    Da das da aber verdammt nach ner Klasse Aufzug aussieht 🙂 Kannst du doch ganz einfach ne private Instanzvariable machen, also in der Art:

    class blah
    {
    private:
        int x;
    }
    

    Dieses x ist dann doch logischerweise für alle Funktionen gleich. Wenn du noch weiter gehen willst und eine Variable willst, die auch für ALLE Instanzen der Klasse dieselbe ist, machste sie einfach static:

    class blah
    {
    private:
        static int x;
    }
    


  • Ja das weiß ist!!
    aber ich will hardware-unabhängig programmieren
    und will deshalb die variablen mit einem wert definieren!
    wenn ich das mache schreibt der compiler:
    !!Cannot initialize a class memeber here!!

    class aufzug
    { privat:
      int radius=getmaxx()/2;
      ...
      public:
      ...
    }
    


  • Original erstellt von Lugstein Stefan:
    aber ich will hardware-unabhängig programmieren

    Was hat das damit zu tun?

    und will deshalb die variablen mit einem wert definieren!

    Dafür gibt's 'nen Construktor.



  • class xxx
    {
        public:
        xxx (); // Konstruktor
    
        private:
        int variable;
        int variable2;
    };
    
    xxx::xxx ()
        :
    variable ( WERT ),
    variable2 ( WERT )
    {
    }
    

    Wäre eine Möglichkeit. Ist aber alles Standard-C++ - dorthin kommt es jetzt auch!

    MfG SideWinder


Log in to reply