IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[OO] override overload


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut [OO] override overload
    Salut,

    j'ai une classe de base (TRoot) qui a un create

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    constructor Create(AGrid: TFrmRootClass);virtual
    Mes classes filles ont

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    constructor Create(AGrid: TFrmRootClass); override;
    OK

    Mais une de mes filles doit pouvoir être crée sans TFrmRootClass. Donc j'ai fait (au niveau de la fille)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    constructor Create(AGrid: TFrmRootClass); overload; override;
        constructor Create; overload;
    Et j'ai un warning

    Method 'Create' hides virtual method of base type 'root'
    Comment enlever cela?

    Merci

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    ajoute reintroduce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    constructor Create(AGrid: TFrmRootClass); overload; override; reintroduce;
    constructor Create; overload; reintroduce;
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    J'ai une erreur :

    Field definition nat allowed after method or properies
    sans avoir évidement de field après cela...

  4. #4
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    mets reintroduce avant le override
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  5. #5
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Toujours la même erreur...

  6. #6
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Pardon, ça n'a rien à voir.
    Tu doit avoir des attributs définis après tes méthodes.
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  7. #7
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    tu peux peut-être palier à ca avec AGrid optionnel
    style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    constructor Create(AGrid: TFrmRootClass = nil);virtual
    ainsi que dans les classes fille.
    Il faut gérer si c'est nil ou pas après...

    J'admet que c'est pas très joli comme solution mais ca devrait fonctionner si l'autre solution ne marche pas.

    le reintroduce de MDSoftware est mieux je pense, et plus logique.
    mais j'ai jamais eu besoin de l'utiliser alors...

    F1 sur reintroduce et je pense que tu trouveras la solution.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  8. #8
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    voici ma définition complete de classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    TChambre = class(TRoot)
      private
        FTypeChambre: TTypeChambre;
        FHotelID: Integer;
      public
        property TypeChambre: TTypeChambre read FTypeChambre;
        constructor Create(AGrid: TFrmRootClass); overload; reintroduce; override;
        constructor Create; overload; reintroduce;
        destructor Destroy; override;
        procedure SupprimerChambre;
        procedure EditChambre;
        procedure AjoutChambre;
        function HotelChambre(ChambreID: Integer): Integer;
        procedure FiltreParHotel(HotelID: Integer; const HotelName: String);
      end;
    et j'ai l'erreur au premier constructeur (D2005 Patch 2)

  9. #9
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Je regrette de ne pas avoir Delphi sous la main. Tente ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    TChambre = class(TRoot)
      private
        FTypeChambre: TTypeChambre;
        FHotelID: Integer;
      public
        property TypeChambre: TTypeChambre read FTypeChambre;
        constructor Create(AGrid: TFrmRootClass); overload; override;
        constructor Create; overload; reintroduce;
        destructor Destroy; override;
        procedure SupprimerChambre;
        procedure EditChambre;
        procedure AjoutChambre;
        function HotelChambre(ChambreID: Integer): Integer;
        procedure FiltreParHotel(HotelID: Integer; const HotelName: String);
      end;
    (retrait du premier reintroduce)
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  10. #10
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Avec le reintroduce après le overload, cela fonctionne...

    Comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    constructor Create(AGrid: TFrmRootClass); overload; override;
        constructor Create; reintroduce; overload;
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/05/2010, 10h42
  2. Override / Overload
    Par Bleys dans le forum Delphi
    Réponses: 2
    Dernier message: 28/02/2007, 20h01
  3. Réponses: 5
    Dernier message: 17/05/2006, 11h33
  4. [VB.NET]Comment correctement utiliser Overrides/Overloads?
    Par NicolasJolet dans le forum VB.NET
    Réponses: 5
    Dernier message: 21/03/2006, 10h39
  5. [Traduction] Overload et Override en français ?
    Par vbrabant dans le forum Langage
    Réponses: 3
    Dernier message: 11/08/2005, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo