Variabelübergabe zwischen zwei Klassen



  • Hallo zusammen ich habe ein Problem und hoffe ihr könnt mir helfen.
    Ich habe zwei Dialog Klassen und möchte in der einen Variablen setzen und in der zweiten auf diese Werte zugreifen. Aber der gesetze Wert wird nicht übernommen.

    Ich habe in der Klasse 1 die Funktionen SetFlag und GetFlag erzeugt, über die ich die Werte schreiben und lesen möchte. test ist eine public Variable.

    void CSelectSubDeviceDlg::SetFlag(BOOL flag)
    	{
    		test = flag;
    	}
    
    	BOOL CSelectSubDeviceDlg::GetFlag(void)
    	{
    		return test;
    	}
    

    in der 1. Klasse lese ich den Wert auch aus. siehe Code

    void CSelectSubDeviceDlg::OnBnClickedWeiterSubdevice()
    {
    	CUpdaterDlg dlg;
    	dlg.DoChangeDialog(IDD_SELECT_SOFTWARE);
    
    	if(GetFlag()== TRUE)
    	{
    		EndDialog(IDD_SELECT_SOFTWARE);
    	}	
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    }
    

    in der 2. Klasse möchte ich den Wert setzen. Siehe code

    void CSoftwareUpdateDlg::OnBnClickedZurueckHauptMenue()
    {
    	CSelectSubDeviceDlg dlg;
    	dlg.SetFlag(TRUE);
    
    	EndDialog(IDD_UPDATE_SOFTWARE);
    	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    }
    

    Kann mir Jemand sagen was da falsch ist???



  • Auch eine Klasseninstanz (hier dlg) ist letztlich nur eine Variable, beim Verlassen der Funktion wird deren Destruktor aufgerufen.

    Simple Lösung: globale Variablen oder Variablen der Applikationsklasse als Flag benutzen...



  • Jo klappt danke dir



  • elha schrieb:

    ...

    Simple Lösung: globale Variablen oder Variablen der Applikationsklasse als Flag benutzen...

    Am besten die Variablen der Applikationsklasse benutzen, globale Variablen sollte man sich bei objektorientierter Programmierung gar nicht erst angewöhnen.


Anmelden zum Antworten