Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    254

    [C++] template e tipo di parametro istanziato

    Salve,
    ho una domanda sui template di c++, relativamente ad una funzione che mi trovo a gestire:

    template<class TPRic, class T>
    bool confronta(TPRic& a, T& b, T& c){

    if(a=='1' || a=='3') return (b<= c);
    if(a=='2' || a=='4') return (b>= c);
    else return false;
    }

    Come faccio a sapere che tipo è a run-time il parametro "tipoRicerca"?
    Infatti se è un char, va bene l'if che c'è, me se è un int come faccio a saperlo?
    Esiste un modo + pulito per impostare la funzione, usando i template?

    Grazie.

  2. #2
    tipoRicerca non è parametro template, come può cambiare tipo? E in ogni caso mi pare il modo sbagliato di impostare una funzione del genere, in un caso del genere probabilmente avresti un parametro bool che dice se fare un confronto in termini di maggiore o minore.
    ---EDIT---
    Forse intendevi
    codice:
    template<class TPRic, class T>
    bool confronta(TPRic& tipoRicerca, T& primoElemento, T& secondoElemento){
    
    if(tipoRicerca=='1' || tipoRicerca=='3') return (primoElemento <= secondoElemento);
    if(tipoRicerca=='2' || tipoRicerca=='4') return (primoElemento >= secondoElemento);
    else return false;
    }
    ?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    254
    Chiedo scusa, ho corretto il codice!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    254
    Si probabilmente è il modo sbagliato di impostare la funzione!
    Chiedo un consiglio, per impostarla correttamente!

  5. #5
    Perchè fai TPRic come parametro template ?
    Se è un int, è un int, non serve farlo come parametro template.

    Un modo per recuperare il tipo a runtime non c'è. I template sono come un modello di funzione, e viene usato per comporre la funzione dei vari tipi in compilazione, non a runtime.

    Per fare quello che vuoi fare tu, se potessi programmare ad oggetti, potresti sfruttare il polimorfismo.
    Alltrimenti devi fare la comparazione senza sapere il tipo (comunque puoi comparare 2 char, un char ed un int ecc...)
    lolide
    Java Programmer

    Informati

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    254
    Capito.

    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.