[fpc-pascal]Linked List/ pointers/ casting/ OOP Question
Michael.VanCanneyt at Wisa.be
Michael.VanCanneyt at Wisa.be
Sat Jul 10 01:23:11 CEST 2004
On Fri, 9 Jul 2004, Ron Weidner wrote:
> I thought I was getting closer to understanding
> pointers but it appears that I'm still not getting it.
> I wrote the following code fragment but it doesn't
> compile. the errors I get are...
>
> Widget_container_class.pas(80,27) Error: Illegal
> qualifier
> Widget_container_class.pas(88,23) Error: Illegal
> qualifier
> Widget_container_class.pas(88,29) Error: Illegal
> expression
> Widget_container_class.pas(88,29) Fatal: Syntax error,
> ";" expected but "(" found
>
> I numbered lines 80 and 88 in comments so that the
> error messages make sense. (to the experienced
> programmer like yourself :) )Please let me know if you
> see what the problems are.
>
> {$H+}
> unit Widget_container_class;
> interface
> uses
> Attribute_class,Widget_class,Widget_entity_class,web;
> type PWidgetList=^TWidgetList;
> TWidgetList=record
> widget:pointer;
> next:PWidgetList;
> end;
>
> type PWidgetContainer=^TWidgetContainer;
> TWidgetContainer=Object(TWidget)
> private
> PCurWidget,PHeadWidget:PWidgetList;
> text:string;
> public
> constructor init(ATag:string);
> procedure Render();
> procedure SetText(str:string);
> function GetText():string;
> procedure MoveFirstWidget();
> procedure MoveLastWidget();
> procedure AddWidget(PWidget:pointer);
> procedure RenderWidgets();
> end;
>
> procedure TWidgetContainer.RenderWidgets();
> begin
> MoveFirstWidget();
> while (PCurWidget^.next <> nil) do
> begin
> PCurWidget^.widget:=PWidget(PCurWidget^.widget); // cast the pointer to a widget pointer
> if (PCurWidget^.widget^.meta = 'ENTITY') then // this is line 80
At first glance, this should read
PwidgetSomething(PCurWidget^.widget)^.meta = 'ENTITY'
because widget is an untyped pointer ?
And the same for the other line ?
Michael.
More information about the fpc-pascal
mailing list