Hej alle
Jeg er vendt tilbage til en opgave med at læse, tegne og skrive shapefiles. Jeg har fået lavet de strukturer der indeholder de data jeg kan læse fra filerne. Strukturerne indeholder nu data om respektivt d2-point, d2-line, d2-polygon og tilsvarende for 3d elementer.
Jeg kunne lave en metode Paint() for hver struktur .. de har hver deres specielle implementering
Paint(byref graphics g, byref painteventargs e){}
Mht performance går det stærkt med at føjte strukturer omkring .. men, hvordan ligger det, hvis de alle sammen skal til at slæbe rundt med sådan en relativ kraftig Paint-metode?
Alternativet kunne være, at lave en klasse shapeElement
- class shapeElement
- property enum eShapeType //(d2-point eller d3-polygon eller ..
- set(object element){ // data-structuren
- //select case to unbox
- //d2Pointstruct ps= ctype(element ,d2Pointstruct)//unboxing
- //d2Linestruct ls= ctype(element ,d2Linestruct )
- }
- method Paint(...graphics,args..){
- select case eShapeType
- case d2-point
- //implement painting for d2Pointstruct
- //her mangler jeg et 'håndtag' for structen
- case d2-line
- //implement painting for d2Linestruct
- ...
- end select
- }// end paint
- end class
.. Det kan der ihvertfald komme meget boxing/unboxing ud af, men jeg mangler egentlig en 'homogen base-class' som de forskellige typer kan 'være i', så jeg kan lave en list<base-class> beholder.
Det var måske smartere at lave en utility-class med kun en member Paint() med mange argumenter i favnen .. med der mangler stadigvæk et ordentlig håndtag i strukuren når den skal flyttes rundt.
hm .. er det her at c++'s pointer er den bedre løsning?
Jeg begynder at tro, at jeg undervuderer udfordringen.
Nogen kommentar/input af forskellig slags?
Indlæg senest redigeret d. 17.03.2012 13:37 af Bruger #17086