Hilfe mit get-Funktion in meiner Klasse



  • Hallo Community.

    Zurzeit befasse ich mich mit Klassen.
    Ich hab mir selbst als Beispiel eine Test Klasse geschrieben.
    Diese enthält einige Funktionen, doch mein einziges Problem bzw mein Ziel liegt in den get-Funktionen.

    class Window
    {
    private :
    	typedef int pos2d;
    	typedef std::string Wstr;
    
    	pos2d WindowX;
    	pos2d WindowY;
    
    	pos2d WindowWidth;  //Breite
    	pos2d WindowLength; //Länge
    
    	Wstr WindowCaption;
    
    	enum Update_STATUS
    	{
    		STATUS_UPTODATE,
    		STATUS_REFRESH,
    		STATUS_ERROR
    	};
    
    public :
    
    	Window();
    	Window(pos2d WindowX_,pos2d WindowY_,pos2d WindowWidth_,pos2d WindowLength_,Wstr WindowCaption_);
    	void createWindowEx(pos2d WindowX_,pos2d WindowY_,pos2d WindowWidth_,pos2d WindowLength_,Wstr WindowCaption_);
    
    	int getWindowX();
    	int getWindowY();
    
    	int getWindowWidth();
    	int getWindowLength();
    
    	std::string getWindowCaption();
    
    	int setWindowX(pos2d WindowX_);
    	int setWindowY(pos2d WindowY_);
    
    	int setWindowWidth(pos2d WindowWidth_);
    	int setWindowLength(pos2d WindowLength_);
    
    	std::string setWindowCaption(Wstr WindowCaption_);
    
    	bool getDebugInfo(bool);
    
    	void Update();
    };
    

    Die get Funktionen sehen alle so aus

    int Window::getWindowX()
    {
    	return WindowX;
    }
    

    Ich möchte nun erreichen, das wenn ich den Ctor 2mal hintereinander aufrufe, mit verschiedenen Parametern, das sich die Parameter auch ändern.
    Also z.B.

    Window hwnd = Window(
    		111,
    		112,
    		113,
    		114,
    		"TEST");
    
    	hwnd.getDebugInfo(true);
    
    	Window(
    		222,
    		333,
    		444,
    		555,
    		"TEST");
    
            hwnd.getDebugInfo(true);
    

    Beim 2. Aufruf erhalte ich durch die Funktion getDebugInfo die gleichen Werte wie beim ersten Ctor.

    Also hab ich mir gedacht eine Update Funktion zu schrieben, sodass die Parameter immer den return variablen der get Funktionen entsprechen.

    if(Window()::getWindowX() != Window::getWindowX())
    	{
    		Window::setWindowX(Window::getWindowX());
    	}
    

    Ich dachte mir das so :
    Wenn die werte des Ctors nicht den jetzigen get-Werten entsprechen, setze ich die jetzigen ctor Werte auf die return get Werte.

    Ich bin leider noch kein fortgeschrittener Programmierer, ich hoffe das ihr mir trotz meiner vielleicht confusen Beschreibung helfen könnt.

    Danke -win32



  • Warum willst Du den Ctor 2x aufrufen? Das macht keinen Sinn.
    Erstelle 2 eigenständige Instanzen Deiner Klasse.
    Im moment schaust Du ja nur auf eine Instanz, logisch das die Dir immer
    dasselbe zurückgibt.



  • Was ist wenn ich das Window verschieben will?Um nicht immer dann alles getten und dann setten kann man doch eine Update Funktion schrieben.



  • Klar kannst Du Dir eine Update-Funktion schreiben. Aber so ein Update sollte ja nicht der Ctor durchführen, denn der wird ja nur beim erstellen Deiner Klasse ausgeführt.



  • Gehe ich richtig in der Annahme, dass Du ein Objekt vom Typ 'Window' mit dem Namen "hwnd" einmal mit den Werten "111, 112, 114, 115, 'TEST'" und ein anderes mal das gleiche Window "hwnd" mit den Werten "222, 333, 444, 555, 'TEST'" haben möchtest?
    Wenn dem so ist, musst Du wissen, dass ein ctor (Konstruktor) zum erstellen einer Instanz dient; ggf. mit Parameterübergabe. Weitere Werte können dem Objekt dann über Set-Methoden übergeben werden. Du kannst das auch Update-Funktion nennen. Dann verschiebst Du das Window "hwnd", wenn die Parameter den Koordinaten entsprechen.



  • Helmut.Jakoby schrieb:

    Gehe ich richtig in der Annahme, dass Du ein Objekt vom Typ 'Window' mit dem Namen "hwnd" einmal mit den Werten "111, 112, 114, 115, 'TEST'" und ein anderes mal das gleiche Window "hwnd" mit den Werten "222, 333, 444, 555, 'TEST'" haben möchtest?
    Wenn dem so ist, musst Du wissen, dass ein ctor (Konstruktor) zum erstellen einer Instanz dient; ggf. mit Parameterübergabe. Weitere Werte können dem Objekt dann über Set-Methoden übergeben werden. Du kannst das auch Update-Funktion nennen. Dann verschiebst Du das Window "hwnd", wenn die Parameter den Koordinaten entsprechen.

    nein das ist so nicht richtig.Ich möchte keine 2 instanzen erstellen sondern Werte des Ctors der instanz ändern/updaten.



  • Warum funktioniert die Update Funktion eig. nicht?
    Ist es ein Logic Fehler, oder ligt es vielleicht am Ctor selbst.
    Das steht im ctor

    Window::setWindowCaption(WindowCaption_);
    	Window::setWindowLength(WindowLength_);
    	Window::setWindowWidth(WindowWidth_);
    	Window::setWindowX(WindowX_);
    	Window::setWindowY(WindowY_);
    


  • Möchtest Du die Werte

    pos2d WindowX;
    pos2d WindowY;
    pos2d WindowWidth; //Breite
    pos2d WindowLength; //Länge

    der einen Instanz ändern?



  • ganz genau 👍



  • Dann lese noch mal genau meinen ersten Beitrag.



  • if(Window::WindowX != Window::getWindowX())
    {
    Window::setWindowX(Window::getWindowX());
    }
    

    ?



  • Ok ich steh gerade auf dem Schlauch.
    Ich mach jetzt mal ne kurze Pause und versuchs nochmal.
    Trotzdem vielen Dank Helmut.Jakoby 🙂



  • Wie lernst Du gerade C++? Mit einem Buch?
    Edit: Viel Erfolg!



  • Ja ich lerne mit einem Buch



  • Was macht

    void createWindowEx(pos2d WindowX_,pos2d WindowY_,pos2d WindowWidth_,pos2d WindowLength_,Wstr WindowCaption_);
    

    ?



  • Bis jetzt noch nichts.Steht nur das gleiche wie im Ctor


Anmelden zum Antworten