Hilfe zu Variablen/Klassen



  • Beispiel:

    main.cpp:

    #include <iostream>
    #include "test.hpp"
    
    using namespace std;
    
    int main()
    {
    	Test test;
    
    	Test.var = 20; // geht nicht
    	Test::var = 20; // geht nicht
    	var = 20; // geht nicht .....
    
    	getchar();
    
    	return 0;
    }
    

    test.hpp:

    #ifndef TEST_HPP
    #define TEST_HPP
    
    class Test
    {
    public:
    
    	Test();
    	~Test();
    
    private:
    	int var;
    	int var2;
    };
    
    #endif
    

    test.cpp

    #include <iostream>
    #include "test.hpp"
    
    using namespace std;
    
    Test::Test()
    {
    	var = 100;
    	var2 = 202;
    }
    

    Frage:

    Wie kann ich jetzt aus der main die variablen von test.hpp/cpp ändern? mit zeigern? ich hab die .hpp in beiden cpp's inkludiert... deshalb weiss ich nicht was ich falsch mache... wahrscheinlich der einfachste fehler den man machen kann 😃 aber ich checks halt nicht .. 🙂



  • Wenn du variablen außerhalb deiner Klasse ändern können willst musst du sie als Public: Deklarieren.



  • Chp+ schrieb:

    Wenn du variablen außerhalb deiner Klasse ändern können willst musst du sie als Public: Deklarieren.

    dann zeigt der mir immernoch das gleiche an ... geht nicht.. hab ich aber auch schon davor probiert.. irgendwelche anderen möglichkeiten ?


  • Mod

    abratar schrieb:

    dann zeigt der mir immernoch das gleiche an ... geht nicht.. hab ich aber auch schon davor probiert..

    Dann machst du wohl was falsch.

    irgendwelche anderen möglichkeiten ?

    -Uns zeigen, was du genau machst und was passiert
    -Dich selber tiefer mit Klassen und Sichtbarkeit befassen



  • SeppJ schrieb:

    abratar schrieb:

    dann zeigt der mir immernoch das gleiche an ... geht nicht.. hab ich aber auch schon davor probiert..

    Dann machst du wohl was falsch.

    irgendwelche anderen möglichkeiten ?

    -Uns zeigen, was du genau machst und was passiert
    -Dich selber tiefer mit Klassen und Sichtbarkeit befassen

    ich hab schon schon gezeigt wie ich es aufgebaut habe... egal ob ich die int var; und int var2; in public: oder private: mache.. es kann nichtvon main.cpp aus verändert werden .. mit keinen der angegeben zeilen in der main.cpp ... Und der sagt mir immer dass var undefined ist...



  • test.var, nicht Test.var.



  • abratar schrieb:

    Test test;
    	
    	Test.var = 20; // geht nicht
    

    Hier muss test klein geschrieben werden, dann funktioniert es (hat man davon wenn man seine Instanzen so doof benennt...).

    Edit 1: Code-Tags angepasst.

    Edit 2: Ich wollte noch hinzufügen, dass der .-Operator (Punkt) linksseitig immer ein Objekt (jaja, oder eine Referenz... ist hier aber nicht von Bedeutung) erwartet. Mit dieser Regel ergibt <Typ>.<Member> gar keinen Sinn.



  • Aber was ist wenn ich die variable von einer anderen .cpp aus ändern will .. also nciht main.cpp ? der kennt dann test.var nicht.. ? wie muss ich das da machen ?


  • Mod

    abratar schrieb:

    Aber was ist wenn ich die variable von einer anderen .cpp aus ändern will .. also nciht main.cpp ? der kennt dann test.var nicht.. ? wie muss ich das da machen ?

    Du hast meinen vorherigen Tipp nicht befolgt:

    SeppJ schrieb:

    -Dich selber tiefer mit Klassen und Sichtbarkeit befassen

    Dein Vorhaben führt dich aber zur dunklen Seite der Programmierung: Globale Variablen und Spaghetticode. Leicht und verführerisch zuerst es sieht aus. Doch wenn einmal du gewählt hast diesen Pfad, für immer dein Handeln wird er bestimmen.

    Bau dein Programm vernünftig auf, dann brauchst du auch keine globalen Variablen und verbringst nicht den Rest deines Leben damit, deine eigenen Fehler zu suchen. Dinge, die du brauchen könntest: Funktionen und Funktionsparameter, Klassen und Klassenmember.


Anmelden zum Antworten