PDA

Visualizza la versione completa : switch solo su interi???


Relisys
25-04-2008, 22:30
salve a tutti...

avrei un problema...dovrei gestire la creazione di una albero con uno switch che mi riconosce dei comandi in base a tipo di token che gli passo...del tipo :



TreeNode* TExpression::A()
{
TreeNode* root;
switch(*pointer) // pointer è il token corrente;
{
case (*pointer è un letterale):
blablablabla;

default:
return root;
}

}


il problema è che in compilazione mi da un problema...che lo switch si può fare solo su costanti intere...

non si può proprio fare quella cosa che voglio fare???


grazie anticipatamente

oregon
25-04-2008, 23:14
Ma

pointer

di che tipo e'?

Relisys
25-04-2008, 23:17
iteratore ad una tokelist...

mondobimbi
25-04-2008, 23:38
solo linguaggi come javascript e php sono più generosi nell'accettare tipi diversi dall'integer nello switch. Dura lex, sed lex.

XWolverineX
26-04-2008, 00:50
Lo switch sulle classi viene implementato, di solito, con le funzioni virtuali e il polimorfismo.

Relisys
26-04-2008, 02:12
capito via...via di IF :D

MacApp
26-04-2008, 02:47
Originariamente inviato da Relisys
capito via...via di IF :D

Puoi costruire una funzione/un metodo che associa un id univoco costante intera per il tuo TreeNode ed a quel punto "switci" sull'id.

Relisys
26-04-2008, 09:51
eh c'avevo pensato e voleo vedere se era possibile...del tipo



int a;
switch(a){
case riconosci_pointer():
.......
}


e



int riconosci _pointer(){
if(*pointer->è_identificatore){
return 1;
}
}


e così via per tutti...
ma a questo punto tanto vale fare degli if...

mondobimbi
26-04-2008, 10:09
una sequenza di if .. else if ... else if ... else ben indentata non è assolutamente meno elegante e chiare di uno switch, che ha comunque sempre il fastidioso break da inserire su ogni case.
ciao
sergio

XWolverineX
26-04-2008, 10:22
Originariamente inviato da XWolverineX
Lo switch sulle classi viene implementato, di solito, con le funzioni virtuali e il polimorfismo.

Loading