ciao.
Ho varie tipologie di elemento(classi che derivano tutte dalla stessa classe base)e ho vari vector stl che contengono tutti gli elementi presenti in un documento per ogni tipologia di elemento.
Ho un visitor che uso per caricare dati e restituire una stuttura tipica della classe elemento,ad es : beam avrà una struttura BeamProperties con tutti i dati che mi servono per rappresentare quella classe ad es profondità estrusione , direzione estrusione ecc... alcuni elementi sono tipici della classe ( non si trovano nelle altre classi) e quindi tipici della struttura che rappresenta e contiene i dati delle proprietà di quella tipologia.
Il visitor ha la funzione , passato elemento per elemento ,di caricare i dati dalle classi della tipologia (ad es beam).
passo alla domanda:
dato che il visitor ha funzioni comuni che dovrei reimplementare per le varie classi tipologia , mi chiedevo se fosse possibile creare un template in modo da passare la classe specifica delle proprietà al visitor tramite template e caricarla, per poi recuperare
un vettore con tutte le classi proprietà di quel tipo dall esterno.
questo per non creare vari visitor specifici per ogni tipologia
mi spiego:
codice:CVisitorBeam visitorBeams for each beam in Beams visitorBeams.accept(beam)//carico le proprietà vector< beamProperties > vAllBeamProperties = visitorBeams.getProperties()//mi faccio restituire un vettore con le prorietà dei beams CVisitorWall visitorWall for each wall in Walls visitorWall.accept(wall)//carico le proprietà vector< wallProperties > vAllBeamProperties = visitorWall.getProperties()//mi faccio restituire un vettore con le prorietà dei wallpraticamente al visitor passo il template col tipo di proprietà specifico , istanzio un vettore di quel tipo nel visitor e lo riempio diversamente per ogni tipologia e lo restituisco.codice:posso fare qualcosa del tipo: CvisitorGeneral<tipoclasseproprietà> visitorGeneral for each beam in Beams visitorGeneral.accept(beam)//carico le proprietà vector< tipoclasseproprietà> vAllSpecificsProperties = visitorGeneral.getProperties() CvisitorGeneral<tipoclasseproprietà> visitorGeneral //CvisitorGeneral<wallProperties> visitorGeneral for each wall in Walls visitorGeneral.accept(wall)//carico le proprietà vector< tipoclasseproprietà> vAllSpecificsProperties = visitorGeneral.getProperties() //vector< wallProperties> vAllSpecificsProperties
puo essere corretto?
grazie.