Ciao.
ho un array di stringhe che descrive il le caratteristiche di vari oggetti, uno per stringa:la posizione x,y e z e in particolare un parametro int nType che puo essere 0 o 1.
Pensavo di creare una classe base per tutti questi oggetti(che sono dei marker di augmented reality)di nome CBaseMarker e di gestire la creazione / cancellazione di questi marker tramite un parsing dell' array di stringhe che mi arriva un tot di volte al sec.
ogni stringa dell' array descrive le caratteristiche della classe del marker.
quindi so se c'è da rimuovere / aggiungere o modificare un marker tramite un ID che mi ritrovo sempre nella stringa n dell array di stringhe.
fino qui nessun problema.
Il problema nasce nell analisi :
I marker possono servire a visualizzare un immagine nella loro coordinata x,y,z o possono servire ad altre funzioni ad esempio una serie di marker con nType= 1 vanno uniti con una linea al fine di creare un "muro" un perimetro ma potranno servire anche ad altri scopi in futuro.
Per questo ho cercato di creare due classi derivanti da cBaseMarker CMArkerMesh(che visualizza un oggetto) e CMarkerWall (che serve per creare il perimetro inseme agli altri marker dello stesso tipo)
Poi volevo inserire tutti questi oggetti , sia MarkerMesh che MarkerWall in un container stl di tipo CBaseMarker.
ogni tot di tempo(quando mi arriva l'array di stringhe aggiornato) per visualizzare le mesh delle classi cmarkermesh basta scorrere il container e richiamare la funzione drawMesh di ogni oggetto.
E' proprio qui il problema di analisi:
1)è corretto creare dei metodi virtuali nella classe base che vengono utilizzati solo da un tipo di classe e non da altri tipi della stessa gerarchia di derivazione?
secondo me no , non ho capito bene quindi come fare
Per es:
2)Se l'oggetto è un MArkerWall quando invoco la funzione DrawMesh non fa un bel niente(o meglio viene invocata la funzione della classe base), perchè non reimplementa il metodo virtuale della classe base cbasemarker:rawMesh
e questo è corretto(il fatto che non faccia un bel niente)?
Inoltre un altra domanda:
per calcolare il perimetro degli oggetti MarkerWall dovrei iterare il container e farmi ritornare , se l'oggetto è un MarkerWall il punto xyz da utilizzare poi successivamente dall' algoritmo che calcola il perimetro , ma solo se è un markerWall.
insomma ho questa incertezza , spero che persone piu' esperte di me e quindi piu capaci di capire che me di scrivere rispondano.
ps.
Con i template forse si riuscirebbe a migliorare il design secondo me ma prima aspetto una risposta alle domande.
Grazie