Polymorphism: Difference between revisions

Content added Content deleted
Line 30: Line 30:
DECLARE SUB CircleSetR (pthis AS Circle, r0 AS INTEGER)
DECLARE SUB CircleSetR (pthis AS Circle, r0 AS INTEGER)
DECLARE SUB CirclePrint (pthis AS Circle)
DECLARE SUB CirclePrint (pthis AS Circle)
DECLARE SUB PolyPrint (pthis AS ANY, type%)


TYPE Point
TYPE Point
Line 39: Line 40:
r AS INTEGER
r AS INTEGER
END TYPE
END TYPE

DIM SHARED POINT%, CIRCLE%
POINT% = 0
CIRCLE% = 1


DIM p AS Point
DIM p AS Point
Line 44: Line 49:


PointInit p
PointInit p
CircleInit c

REM No virtual function call possible
PointPrint p
PointPrint p
CirclePrint c

REM Faked virtual function
PolyPrint p, POINT%
PolyPrint c, CIRCLE%
END

SUB PolyPrint (pthis AS ANY, type%)
IF (type% = CIRCLE%) THEN
CirclePrint pthis
ELSE
PointPrint pthis
END IF


END SUB
CircleInit p
CirclePrint p


SUB PointInit0 (pthis AS Point)
SUB PointInit0 (pthis AS Point)