Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]funzione parametrica

    ciao.

    passo alla domanda:
    Ho 3 tipi di funzione 2d, circle, line e conic parametrizzate(che determinano l'andamento della funzione tramite un equazione, in questo caso line, circle e conic).
    Ho bisogno di 3 funzioni che mi calcolino un vettore(punto 2d) a seconda dei parametri che gli passo.

    per questo avevo pensato ad un pattern strategy , il problema è che le 3 funzioni che calcolano il vettore accettano parametri diversi.

    Questo è un problema perchè avevo pensato di creare una classe base CBaseStrategy con una funzione calculate in cui incapsulo la funzione matematica che mi calcola il punto in modo diverso, e utilizzare in una classe che si occupa di estrarre dei dati da file di testo un puntatore polimorfico che puo essere una delle classi che ereditano da CBaseStrategy(una classe concreta) ma con funzione calculate diversa.
    La creazione differente è data dall' input del file di testo , per es "CIRCLE" instanzia una classe strategy CCircle(che deriva da CBaseStrategy) ma poi tutto il resto del comportamento è identico, solo cambia la funzione parametrica.

    il fatto quindi che ho parametri differenti(per es la linea ha bisognio di un double, il circle di due double e un raggio) non mi permette di creare una funzione virtuale con identica signature per le classi concrete(CIRCLE , LINE ecc..) e neanche posso creare una funzione che setta i parametri.

    come posso fare ?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Per come l'ho capita io il modo più semplice è che tale funzione parametrica sia il costruttore della classe concreta e calculate() la funzione virtuale.
    Uno step successivo potrebbe essere l'uso di std::function<> accoppiato a un std::bind() se non interessa il valore di ritorno.
    In ogni caso non mi pare una cosa così impossibile da fare.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

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.