Newsgroup: it.comp.lang.c++
Titolo: Quale soluzione utilizzare

Ciao a tutti, sono alle prese con un problema architetturale, ma prima
di buttarmi sulla prima soluzione che mi è venuta a mente volevo
chiedervi qualche consiglio in merito.
Il mio problema è il seguente:
Supponiamo di avere la classe Table che al suo interno ha un insieme
di oggetti di tipo record.
class Table
{
      Record[] records;
}
il singolo record ha la struttura seguente :
class Record
{
    int id;
    Object type;
}
type puo' essere :
BigInteger
Float
Double
InetAddress
String
Timestamp
array of bytes
Descritte le classi principali, supponiamo di avere uno stream di
oggetti di tipo Table.
e un insieme di regole di filtraggio/aggregazione del tipo:
"Applica al record con id="100" la funzione MIN "
che devono essere applicate ad ogni elemento di questo stream.
Detto questo, avrei quindi la necessità di avere un metodo MIN per
ogni tipo contenuto in un record. Ad 'esempio:
BigInteger Min(BigInteger a, BigInteger b);
Float Min (Float a, Float b);
String Min (string a, string b);
ecc....
Uno dei requisiti della libreria che sto scrivendo è che possano
essere aggiunte dinamicamente delle nuovi funzioni tipo MIN..
Quindi la prima soluzione che mi è venuta in mente, è quella  di usare
la reflection per ispezionare a run time tutte le classi in cui è
definiito un metodo MIN, cercando quello con i parametri di tipo
corretto.. Ma come ben sappiamo in c++ non abbiamo la reflection..
Qualche proposta?

 Qualche proposta?
Prima dovresti definire meglio il problema.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

definiito un metodo MIN
La "reflection" è qualcosa che possiede Java, non C++ ed è qualcosa di
cui i programmatori Java abusano moltissimo, a mio parere. Hanno lo
stramaledetto vizio di ispezionare tutto a run-time. Come già detto,
credo che la programmazione generica risolva egregiamente il tuo
problema senza trucchi "sporchi".

 stramaledetto vizio di ispezionare tutto a run-time. 
a questo proposito mi sorge un dubbio un po' filosofico 
sulla reflection :
non è che uno per usarla proficuamente deve già in realtà 
sapere abbastanza cose sull'oggetto ispezionato ?
Cioè, se io mi muovo ad esplorare un ambito di cui non 
conosco nemmeno il "dominio", lo spazio dei parametri (non 
so spiegarmi bene), come posso presumere di ricavare info 
utili ? Devo sapere a priori cosa cercare, vero ?
Cioè, mi sto facendo l'idea che l'ispezione possa essere 
utile quando diventa solo una selezione, come selezionare 
una voce all'interno di una combo-box precompilata, dove 
devo leggere le voci, confrontarle con una mia 
attesa/necessità nota, e vedere se la trovo o meno.
Una reflection usata in uno spazio ignoto a cosa può 
servire, e come si deve usare ? Come dire, se in un form di 
richiesta dati in certi formati, che non conosco, vedo una 
text box di input e nessuna indicazione su come compilarla, 
andando a caso non penso che si riesca a ottenere niente di 
utile.
E' accettabile dire che sostanzialmente la reflection 
estenderebbe a runtime ciò che i template fanno a compile 
time, ma non molto più di quello ?
Se questo è errato, cos'altro di più, in astratto, si può 
cavarne ?
ciao
Soviet
