Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-07-2007, 21:38   #1
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
[c++] typeid e tipi semplici

Domanda semplice (nn troppo ):

se io ho un funzione tipo:
Codice:
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
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 24-07-2007, 22:22   #2
Cif
Member
 
L'Avatar di Cif
 
Iscritto dal: Oct 2002
Città: Vicenza
Messaggi: 194
Io con le gerarchie di classi uso i dynamic_cast, ma non ho mai dovuto usarli con i tipi semplici.
Cif è offline   Rispondi citando il messaggio o parte di esso
Old 25-07-2007, 09:24   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da tglman Guarda i messaggi
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
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 25-07-2007, 11:44   #4
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
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:
Codice:
void fun1(Type *type)
{
......
}
per poi effettuare all'interno dei typeid con i tipi wrapper..

Giusto?
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 25-07-2007, 11:54   #5
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
C'è qualche motivo per cui non puoi risolvere il tuo problema con un pò di polimorfismo (o con un pizzico di template)?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 25-07-2007, 13:52   #6
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
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

Ultima modifica di tglman : 25-07-2007 alle 13:56.
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 25-07-2007, 14:06   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da tglman Guarda i messaggi
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)

Quote:
in questo modo riesco ad usare typeid per determinare la classe derivate correttamente!
Non vedo la necessità morbosa di usare il typeid...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:07.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v