[0.9.28.2/Mac OS] Compilation unité visitor pattern
Bonjour,
Ceci est mon premier post sur ce site qui est décidément incontournable. Je suis autodidacte et m'interesse actuellement aux concepts/notions de persistance et de design patterns. Pour cela, je m'aide du tuto de ercaz54 : http://blog.developpez.com/erca57/p6...tern/#more6767 .
J'essaie de compiler le code suivant sans succés :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| unit uOPFRoot;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
Type
TBizObj = class(TObject)
public
procedure AcceptBizObjVisitor(Visitor: TBizObjVisitor ); virtual;
end;
TBizObjVisitor = class(TObject)
public
procedure VisitBizObj(Instance: TBizObj); virtual;
end;
implementation
{
******************************** TBizObjVisitor ********************************
}
procedure TBizObjVisitor.VisitBizObj(Instance: TBizObj);
begin
end;
{
*********************************** TBizObj ************************************
}
procedure TBizObj.AcceptBizObjVisitor(Visitor: TBizObjVisitor);
begin
Visitor.VisitBizObj(Self);
end;
end. |
Le message retourné par le compilateur est : uopfroot.pas(15,59) Error: Identifier not found "TBizObjVisitor"
J'utilise Lazarus 0.9.28.2 beta et fpc 2.2.4 sur machine Mac OS 10.6.2
Merci d'avance.
Compilation sous Debian Lenny
Re bonjour,
Vu que personne n'a émis d'avis, je me suis amusé à compiler le même code sur une Debian Lenny 2.6.26-2-686 / Lazarus 0.9.28.2-0 beta / fpc 2.2.4-3.
Ben, toujours le même message d'erreur.
J'essayerais ce soir sur une Delphi+Win et vous dirais ce qu'il en est.
Si quelqu'un pense que je devrais me diriger vers un autre forum (sur developpez.net) ou indiquer un lien ou une piste, j'en serais très heureux.
Salutations.
Compilation unité visitor pattern
Salut,
ça n'a rien à voir avec la plateforme. Il faut juste que tu fasse une "forward declaration".
En gras et italique, le code à ajouté.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
Type
// déclaration forward pour dire au compilateur ce qu'est TBizObjVisitor
TBizObjVisitor = class;
TBizObj = class(TObject)
public
procedure AcceptBizObjVisitor(Visitor: TBizObjVisitor ); virtual;
end;
TBizObjVisitor = class(TObject)
public
procedure VisitBizObj(Instance: TBizObj); virtual;
end;
implementation
{
******************************** TBizObjVisitor ********************************
}
procedure TBizObjVisitor.VisitBizObj(Instance: TBizObj);
begin
end;
{
*********************************** TBizObj ************************************
}
procedure TBizObj.AcceptBizObjVisitor(Visitor: TBizObjVisitor);
begin
Visitor.VisitBizObj(Self);
end;
end. |
Salut.