PDA

View Full Version : [c++] typeid e tipi semplici


tglman
24-07-2007, 22:38
Domanda semplice (nn troppo ;) ):

se io ho un funzione tipo:

void fun1(void * par)
{
......
}


posso all'interno del corpo della funzione determinare se il puntatore passato per parametro punti ad un tipo semplice(int,char, long,double) e specificamente a quale?

io con typeid n sono stato in grado ;)

Cif
24-07-2007, 23:22
Io con le gerarchie di classi uso i dynamic_cast, ma non ho mai dovuto usarli con i tipi semplici.

ilsensine
25-07-2007, 10:24
posso all'interno del corpo della funzione determinare se il puntatore passato per parametro punti ad un tipo semplice(int,char, long,double) e specificamente a quale?
No

tglman
25-07-2007, 12:44
Grazie per la risposta ....

Adesso è un problema concettuale se io avrei bisogno di fare una funzione tipo quella descritta devo implementare degli oggetti Wrapper di tipi semplici??

magari tutti che estendono una classe "marker"?
in modo da aver:

void fun1(Type *type)
{
......
}


per poi effettuare all'interno dei typeid con i tipi wrapper..

Giusto?

ilsensine
25-07-2007, 12:54
C'è qualche motivo per cui non puoi risolvere il tuo problema con un pò di polimorfismo (o con un pizzico di template)?

tglman
25-07-2007, 14:52
Allora spiego il mio problema in preciso io ho bisogno di avere un semplice metodo che imposta il valore su di una classe....
Il valore però può essere di qualsiasi tipo semplice, e nn mi andava di implementare un metodo per ogni tipo!
Quindi avevo pensato di scrivere il metodo con per parametro "void *" ma avidentemente nn può funzionare, ed adesso pensavo di definire una classe Type base e una serie di classi derivate tipo: Bool,Long,Double per poi passare al metodo un putatore "Type *" in questo modo riesco ad usare typeid per determinare la classe derivate correttamente!

vi sembra giusto ?

Con i template nn saprei che fare .... se avete un'idea ditemela ;)

ilsensine
25-07-2007, 15:06
Quindi avevo pensato di scrivere il metodo con per parametro "void *" ma avidentemente nn può funzionare, ed adesso pensavo di definire una classe Type base e una serie di classi derivate tipo: Bool,Long,Double per poi passare al metodo un putatore "Type *"
E' un modo; oppure puoi usare una classe template (oppure la tua stessa funzione può essere un template)

in questo modo riesco ad usare typeid per determinare la classe derivate correttamente!
Non vedo la necessità morbosa di usare il typeid...