dynamische Variablendefinition

anmae

Erfahrenes Mitglied
Hallo,

ich habe so etwas:
Code:
 	switch (pageID){
	case WIZARDPAGE1:
		C_WizardNewGroup1* dlg;
		break;
	case WIZARDPAGE2:
		C_WizardNewGroup2* dlg;
		break;
	case WIZARDPAGE3:
		C_WizardNewGroup3* dlg;
		break;
	case WIZARDPAGE4:
		C_WizardNewGroup4* dlg;
		break;
	}

geht nicht wegen neudefinition von dlg.

Wie geht das richtig?

thx
Andres
 
Hallo.
Das was du da machst ist die Variable dgl 4 mal zu deklarieren und das wird immer statisch vom
Compiler erledigt => Compilerfehler...

Was du sicherlich willst ist eine dynamische Bindung. Das geht aber nur wenn deine Klassen eine gemeinsame
Basisklasse haben.
Wie schaut deine Klassenstruktur aus?

Gruß

RedWing
 
Zuletzt bearbeitet:
Also entweder du machst es so wie RedWing es gesagt hat, das wäre auch das was ich dir raten würde,
oder du machst das so, falls dir das mit Klassenvererbung usw zu umständlich ist:
Code:
// Globale Definition von dlg
void * dlg = NULL;

switch (pageID){
case WIZARDPAGE1:
  dlg = new C_WizardNewGroup1();
  break;
case WIZARDPAGE2:
  dlg = new C_WizardNewGroup2();
  break;
case WIZARDPAGE3:
  dlg = new C_WizardNewGroup3();
  break;
case WIZARDPAGE4:
  dlg = new C_WizardNewGroup4();
  break;
}

// wenn du dlg nicht mehr brauchst -> löschen
delete dlg;
dlg = NULL;

// Zugriff bekommst du dann so: (dazu solltest du dir pageID wegspeichern)
switch(pageID){
  case 1:
    ((C_WizardNewGroup1*)dlg)->Funktion();
    break;
  case 2:
    ((C_WizardNewGroup2*)dlg)->Funktion();
    break;
  case 3:
    ...
}

Ich gebe allerdings zu, dass das ein wenig umständlich ist. ;-)

Alternativ kann man den letzten Teil auch noch mit einem Cast operator erledigen.
(ich glaub dynamic_cast war das)
 
Zurück