J'ai voulu regarder les interfaces, mais l'exemple proposé est incomplet dans la documentation.
Code : Tout sélectionner
Interface MonObjet
Create()
MoveObj(x,y)
Destroy()
EndInterface
Structure PGC_Ob
*Functions.MonObjet
x.w
y.w
EndStructure
Procedure MoveObj(*this.PGC_Ob,xx,yy)
*this\x = xx
*this\y = yy
Debug "move"
EndProcedure
Procedure Create(*this.PGC_Ob)
Debug "create"
EndProcedure
Procedure Destroy(*this.PGC_Ob)
Debug "ben paf"
EndProcedure
Procedure Free(*this.PGC_Ob); destructeur
FreeMemory(*this)
EndProcedure
Procedure CreationObjet(); constructeur
*obj.PGC_Ob = AllocateMemory(SizeOf(PGC_Ob))
*obj\Functions = ?Functions
*obj\x = 0
Debug "creation obj"
ProcedureReturn *obj
EndProcedure
;
Objet1.MonObjet = CreationObjet()
Objet2.MonObjet = CreationObjet()
Objet1\MoveObj(10, 20)
Objet1\Destroy()
Objet2\Create()
Objet2\MoveObj(5, 2)
Objet2\Destroy()
DataSection
Functions:
Data.l @MoveObj(), @Destroy()
Data.l @Create(), @Free() ;<-- on peut les placer sur plusieurs lignes
EndDataSection
merci
[Edition] : bon, ben, j'ai trouvé, mais ce n'est pas forcément simple, même si c'est intéressant ^^.
J'ai édité le code