PDA

View Full Version : [c++] - creare procedura per diversi tipi


Granzy94
01-12-2011, 14:33
ho una classe dove ho una procedura ricerca fatta con i puntatori io vorrei implemetare questa procedura in modo che funzioni con qualsisi tipo di variabile!

l'unico problema è vorrei anche che se il tipo di variabile è uno struct o una classe mi permettesse di fare una ricerca di un campo specifico dello struct o della classe!

come posso fare? cosa devo passare alla procedura?

!fazz
01-12-2011, 14:38
dai un'occhiata ai generics

Granzy94
01-12-2011, 14:54
mi potresti spiegare brevemente tu cosa sono?

se può essere utile conosco già i template se è una cosa simile puoi partire da lì!

Floris
02-12-2011, 01:49
mi potresti spiegare brevemente tu cosa sono?

se può essere utile conosco già i template se è una cosa simile puoi partire da lì!
I generics sono i template in Java...credo siano la stessa cosa e che !fazz intenda i template. Se vuoi usare la procedura con qualsiasi tipo di variabile primitiva utilizza i template (potrei anche sbagliarmi...è da un pò che non mi aggiorno sul C++). Se vuoi estenderla alle classi allora credo tu debba usare ereditarietà e metodi virtuali.

WarDuck
02-12-2011, 07:43
I template funzionano sia con le funzioni normali che con le classi.

Granzy94
02-12-2011, 15:49
I template funzionano sia con le funzioni normali che con le classi.

lo so questo ma io vorrei fare una procedura che funzionasse anche con i record (con più campi) ma eseguire la ricerca su un solo campo del record!

marco.r
02-12-2011, 22:16
lo so questo ma io vorrei fare una procedura che funzionasse anche con i record (con più campi) ma eseguire la ricerca su un solo campo del record!

Se e' solo il solito campo che ti serve specializzi il template e nella specializzazione fai il confronto del campo.
Se vuoi una cosa piu' generica (vuoi poter fare la ricerca su un campo arbitrario devi poter specificare nella chiamata) o implementi diverse chiamate di ricerca (magari con nomi diversi), oppure devi passare la funzione di confronto come argomento, o come parametro template aggiuntivo.
Ci sono vari modi, dipende da che devi fare, e se stato parecchio vago.
Riesci a darci piu' dettagli ?

Granzy94
03-12-2011, 14:31
allora provo a spigarmi meglio!

intanto la classe su cui implemento la ricerca è la classe lista fatta con i puntatori e il template!

io vorrei fare in modo che dal main di un qualsiasi programma dopo aver creato l'istanza della classe lista si può chiamare la ricerca così:

struct prodotto
{
int numero;
int prezzo;
};

int main()
{
lista<prodotto> miaLista;

int x;
//faccio finta di aver inserito dei valori nella lista
//e ora richiamo il metodo ricerca su un campo specificandone il numero
x=miaLista.Ricerca(valoreElemento, numeroCampo);
}

il mio problema è che nella classe io non posso sapere il numero di campi del record inizializzato nel main e tanto meno il nome dei campi quindi come posso eseguire una ricerca su un campo specifico del record????